关于android 4.2版本后的多用户目录结构分析(二)- /storage/sdcard0设定铃声失败

关于android 4.2版本的sdcard文件目录分析(含修正)中对4.2版本的android的目录结构进行了简单的分析,但随着测试的深入,越来越发现有些问题,整理如下(是上面的补充)


在android 4.2版本中,通过adb和自己的写文件方法(项目是手机助手),上传图片文件1.jpg,虽然指定目录是/storage/sdcard0/image/1.jpg,但通过debug显示首先获得的上传成功的路径是/storage/emulated/legacy/image/1.jpg,然后系统又自行copy了份到指定的目录/storage/sdcard0/image/1.jpg,通过ContentProvider获得的image时,明显感觉到会有2个1.jpg,而且/storage/emulated/legacy/image/1.jpg会先出现(虽然不是指定目录),虽有瑕疵,但也无所谓了,可以通过过滤显示其中之一,另一份可以删除,当然给用户看来说,也可以使用假的目录,只使用第一种就行


但问题很快就来了,虽然可以通过上面的过滤显示,设置壁纸可以成功,但若上传的music设定铃声时就会有问题,同样会有两份音乐显示(同image),因为为了获取音乐,手机端的默认路径已经将/storage/emulated/0改为了/storage/sdcard0(因为前面的路径/storage/emulated/0不能写入,只能读取),但设置铃声时,使用的URI只能使用/storage/emulated/0的路径而不能使用/storage/sdcard0作为URI的路径进行设置,所以要进行转换即可,即设定铃声时使用/storage/emulated/0模式的路径作为URI的填充

你可能感兴趣的:(Java/Android)