定制设备外接U盘存储文件
单位自己定制的Android系统设备,内存不够大,要求文件存在外接U盘上
manifast权限已经添加:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
通过反射取外置SD卡或挂载U盘路径:
private StorageManager mStorageManager;
mStorageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
//获取所有挂载的设备(内部sd卡、外部sd卡、挂载的U盘)
List<StorageVolume> volumes = mStorageManager.getStorageVolumes();
try {
Class<?> storageVolumeClazz = Class
.forName("android.os.storage.StorageVolume");
//通过反射调用系统hide的方法
Method getPath = storageVolumeClazz.getMethod("getPath");
Method isRemovable = storageVolumeClazz.getMethod("isRemovable");
for (int i = 0; i < volumes.size(); i++) {
StorageVolume storageVolume = volumes.get(i);//获取每个挂载的StorageVolume
//通过反射调用getPath、isRemovable
String storagePath = (String) getPath.invoke(storageVolume); //获取路径
boolean isRemovableResult = (boolean) isRemovable.invoke(storageVolume);//是否可移除
String description = storageVolume.getDescription(this);
Log.d("jason", " i=" + i + " ,storagePath=" + storagePath
+ " ,isRemovableResult=" + isRemovableResult +",description="+description);
}
} catch (Exception e) {
Log.d("jason", " e:" + e);
}
通过反射取到想要的存储路径以后,尝试创建文件夹和写文件都不成功
几经折腾,才发现需要为其添加系统权限
android:sharedUserId="android.uid.system"
由于设备系统是自己内部定制的,软件使用系统签名即可操作U盘存储