当前位置:   article > 正文

Android已申请动态权限报错,Android 读取或者写入U盘时,报错:Permission denied

android 13 mnt/media_rw读取不到文件

**

以下所有操作的前提是: android 系统已经root

**

最近在将文件拷贝到U盘时总是 写入失败(Permission denied)

程序清单中已经加入了权限

并且动态申请了权限

private static String[] PERMISSIONS_REQ = {

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE

};

private static final int REQUEST_CODE_PERMISSION = 1;

int write_permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

int read_permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE);

if ( write_permission != PackageManager.PERMISSION_GRANTED ||

read_permission != PackageManager.PERMISSION_GRANTED ) {

ActivityCompat.requestPermissions(activity, PERMISSIONS_REQ, REQUEST_CODE_PERMISSION);

}

有人说要修改 system\etc\permissions\platform.xml (安装RE文件管理器,即可修改(必须root))中的

修改为

重启之后还是报错

在纠结之后 …

最后发现 程序识别到的U盘目录是 /storage/28BA-794A (28BA-794A 是我的U盘名字)

但是系统中还有一个相同名字的U盘 那就是/mnt/media_rw/28BA-794A

修改目录为/mnt/media_rw/ 后,文件成功写入到U盘中

下面提供一种查找 /mnt/media_rw/ 目录下U盘的方式

try{

StorageManager storageManager = (StorageManager) m_context.getSystemService(Context.STORAGE_SERVICE);

Class storeManagerClazz = Class.forName("android.os.storage.StorageManager");

Method getVolumesMethod = storeManagerClazz.getMethod("getVolumes");

List> volumeInfos = (List>)getVolumesMethod.invoke(storageManager);

Class volumeInfoClazz = Class.forName("android.os.storage.VolumeInfo");

Field udiskPath = volumeInfoClazz.getDeclaredField("internalPath");

Method getFsUuidMethod = volumeInfoClazz.getMethod("getFsUuid");

if(volumeInfos != null){

for(Object volumeInfo:volumeInfos){

String uuid = (String)getFsUuidMethod.invoke(volumeInfo);

if(uuid != null){

String sUdiskPath = (String)udiskPath.get(volumeInfo); // 结果是 /mnt/media_rw/28BA-794A

return sUdiskPath;

}

}

}

}catch(Exception e){

Log.e(TAG," check udisk error = " + e.getMessage());

}

最后,通过反复验证

要操作U盘等外设

系统要具有root权限

修改system\etc\permissions\platform.xml

修改之后需要重启系统

就是操作的目录要正确

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号