我想访问文件:该文件位于我的Moto G5 Android 7智能手机上的USB Stick上。
但是不可能...我无法阅读/mnt/媒体_rw/文件夹。
权限:write_external_storage,read_external_storage已设置,所以这不是问题。
我已经尝试了5个小时,使用google,emoverues.getExternalStorageDirectory((,contextCompat.getExternalFilesdirs,file.readfiles等等...
是否有人可以通过完整的解决方案来帮助我?
似乎是USB或驱动权限的东西。在我的odroid C2上使用Android 6,它正常工作。但是,使用我的Moto G5(Android 7(和Asus Zen Tablet(Android 6(,它不起作用。
我可以选择一个带有" Intent.action_open_document"文件选择器的文件,并且在所有设备上,文档路径都是相同的...但是,某些卷不存在:
华硕Zen(Android 6(
音量:/storage/emulaty/0
选定的文件:/storage/7c23-16ea/m_blueforlabrusca.mp3
。。。
odroid C2(Android 6(
音量:/storage/emulaty/0
音量:/storage/internal
音量:/storage/7c23-16ea
选定的文件:/storage/7c23-16ea/m_blueforlabrusca.mp3
StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
Class<?> StorageVolume = Class.forName("android.os.storage.StorageVolume");
Method getVolumeListMethod = StorageManager.class.getDeclaredMethod("getVolumeList");
Method methodGetPath = StorageVolume.getDeclaredMethod("getPath");
Object[] storageVolumeList = (Object[]) getVolumeListMethod.invoke(storageManager);
final int length = Array.getLength(storageVolumeList);
for (int i = 0; i < length; i++) {
Object storageVolumeElement = Array.get(storageVolumeList, i);
String path = (String) methodGetPath.invoke(storageVolumeElement);
path = new File(path).getAbsolutePath();
volumes.add(new File(path));
Log.i("!!!","Volume: " + path);
}
好的,找到了它。
它不使用普通文件/存储命令。
唯一的方法是使用文档框架:https://developer.android.com/guide/topics/providers/document-provider.html
尝试使用存储访问框架(SAF(。