Android已申请动态权限报错,Android 读取或者写入U盘时,报错:Permission denied
**
以下所有操作的前提是: 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
为
修改之后需要重启系统
就是操作的目录要正确
Android已申请动态权限报错,Android 读取或者写入U盘时,报错:Permission denied相关推荐
- android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退
问题描述:如题,在调试android 9 高通msm8953平台时,客户反馈应用在允许Manifest.permission.WRITE_EXTERNAL_STORAGE权限后,应用闪退. 从log分 ...
- android插件做动态权限,Mui本地打包笔记(四)Android自定义插件的配置(以动态申请权限为例)...
通过自定义插件方式实现Android平台的动态申请权限功能 在上一章中完成了在Mui中调用Android原生的动态权限请求功能(Android动态申请权限的问题).虽然说完成了功能,但是在使用上并不是 ...
- android 6.0动态权限问题
最近,我发现手机的6.0权限在小米手机上存在问题,我在网上搜了很多的代码,都没有解决这个问题,所以这里记录一下自己的android 6.0权限的解决代码,如果有问题,大家可以在网上自己在找找代码去解决 ...
- Android 6.0动态权限申请
Android 6.0动态权限申请 特别感谢: https://www.jianshu.com/p/2fe4fb3e8ce0 本文是在该文的基础上添加了类似自己的读后感才完成的. 我并不希望成为白求恩 ...
- [Android] Android 6.0 动态权限申请看完就会写
Android 6.0 动态权限申请看完就会写 文章目录 Android 6.0 动态权限申请看完就会写 1. 起 2. 权限 3. 四个方法 4. 使用 5. 总结 1. 起 Android 的动态 ...
- android 6.0权限库,Android 6.0动态权限适配
前言 最近项目发现比较多的问题是关于Android 6.0的问题,APP安装之后,在Android 6.0之后的系统,点击直接奔溃打不开,这是为什么昵?这就是Android 6.0以上的系统引入运行时 ...
- Android 7.0动态权限大总结
本文讲的是Android 7.0动态权限大总结,应公司项目需求,做了下Android 7.0适配.对于我们程序员,适配7.0主要就是对手机本地文件的Uri做转换处理.注意红色字体,意思也就是说对于ht ...
- tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied
tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied 这是因 ...
- android studio 写文件,在Android Studio中从我自己的类读取和写入文本文件
我一直在试图创建一个名为TextFileReaderWriter的类我想使用getters和setters来读取和写入文本文件,以便我可以调用类,并通过简单地使用setfileContents(som ...
最新文章
- J Cheminform.|基于子结构的神经机器翻译用于逆合成预测
- Windows Server 2008 多元密码策略之ADSIEDIT
- msbuild 语法_用于删除文件的MSBuild Task语法
- 交换机和路由器上流量限制
- wpf cefsharp html源码,CefSharp For WPF基本使用
- [J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明
- 弹出层中都可以用的复制功能
- 官方版sublime Text3汉化和激活注册码
- springBoot过滤器去除请求参数前后空格
- Pycharm下载包慢的问题
- java关联vss 80020009_Eclipse结合VSS方法
- 2.4.1 ALU-串行加法器和并行加法器
- 程序员有哪些职业发展方向呢?Linux运维
- 数据分析学习记录(四)--在origin中实现单因素方差分析和非参数检验
- poj1018 java_海奥华预言txt_海奥华预言_海奥华预言txt下载
- Linux——MySQL-MMM
- 如何学好图像处理——从小白到大神?
- 系统重温Pandas笔记:(五)变形
- 有将视频横屏改为竖屏的方法吗?
- PYTHON h5py库包安装及读写