Android文件USB Stick访问



我想访问文件:该文件位于我的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(。

最新更新