【Android报错】FileNotFoundException open failed:文件路径 EPERM (Operation not permitted)外部存储至根目录报错,Android外部存储权限动态获取问题
报错:FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted)
查了下,大概原因是因为权限的问题。(小白学Android,Android文档查起来还有点吃力,就直接谷歌+百度。)
但是Manifest里该加的权限都加了。还application增加了android:requestLegacyExternalStorage="true",表示没用。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" />
Android 6.0以后,Android对权限管理更严格了。试了几种解决办法,都不算我想要的。本意是想存储到SD卡的根路径下。
算了,先忽略了。继续往下学习吧。
解决:
自定义存储方法(原代码)
public void saveIMG(){
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {
//获取APP内存储路径,模拟器可行
// ContextWrapper cw = new ContextWrapper(getApplicationContext());
// File sdkPath = cw.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
//获取public存储路径,模拟器可行。真机需要动态权限
// File sdkPath=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
//获取根路径,不可行。增加动态获取外部存储读取权限后,真机运行,可行。
File sdkPath=Environment.getExternalStorageDirectory();
Log.v("hehe","sdkPath:"+sdkPath.getPath());
file =new File(sdkPath,"test.jpeg");
//读取图片
@SuppressLint("ResourceType") InputStream is= getResources().openRawResource(R.drawable.kelala);
//存储图片
OutputStream io=new FileOutputStream(file);
bis=new BufferedInputStream(is);
bos=new BufferedOutputStream(io);
int len=0;
byte[] buf=new byte[1024];
while ((len=bis.read(buf))!=-1){
bos.write(buf,0,len);
bos.flush();
}
Log.v("hehe","读取和存储buffer");
Toast.makeText(OutStore.this,"存储成功!!!!!",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}finally {
if (bis!=null){
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bos!=null){
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
调用自定义存储方法的Activity里增加外部存储动态权限获取的代码:
//需要动态授外部存储权限。模拟器不弹动态权限授权对话框,晚点看下什么问题吧
int REQUEST_EXTERNAL_STORAGE = 1;
String[] PERMISSIONS_STORAGE = {"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE" };
ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);
【Android报错】FileNotFoundException open failed:文件路径 EPERM (Operation not permitted)外部存储至根目录报错,Android外部存储权限动态获取问题的更多相关文章
- 巨坑npm run dev 报错 终于找到正确答案 Error: EPERM: operation not permitted, open '/data/public/build/css/add.p
Windows10环境 npm run dev 报错 终于找到正确答案 Error: EPERM: operation not permitted, open '/data/public/build ...
- npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs'
npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs' 起因:原本安装node在C盘soft文件夹下,按node ...
- npm install 报错(npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法
npm ERR! path E:\SouthernPowerGridProject\web_project\AutoOPS\autoops\node_modules\fsevents\node_mod ...
- 建小程序 - 报Error: EPERM : operation not permitted, scandir mac下改变一个目录的访问权限
问题:用微信开发者工具,建一个小程序,报错(见图1): 建小程序 - 报Error: EPERM : operation not permitted, scandir 解决: 1.打开终端 2.cd ...
- root用户删除文件提示:Operation not permitted
root用户删除文件提示:Operation not permitted http://blog.csdn.net/evanbai/article/details/6187578
- android自定义camera以及uri和文件路径之间的转换
相对直接调用系统的camera,这种方法使用得相对还少一些.根据api文档,步骤如下: 定义一个预览类 可以参照<android高薪之路>这本书上面,有这种方法的一种完整实现 而对应的ac ...
- Android与JS进行交互传文件路径
webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获. 新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目. 先看 ...
- [Android Pro] root用户删除文件提示:Operation not permitted
reference to : http://blog.csdn.net/evanbai/article/details/6187578 一些文件看上去可能一切正常,但当您尝试删除的时候,居然也会报错, ...
- 解决Linux 下 root用户删除文件提示:Operation not permitted
问题描述 用最高权限rm文件,居然报错Operation not permitted.查看权限也没有问题.可想而知有可能文件被保护了.用命令lsattr检查一下就知道. [root@linux roo ...
- Linux 文件删除 提示 Operation not permitted
Linux 删除 隐藏文件提示 Operation not permitted ? linux 删除 隐藏文件 提示 Operation not permitted 不允许操作? 使用 ls ...
随机推荐
- VS2019编译Qt4.8.7
下载4.8.7源码Index of /archive/qt/4.8/4.8.7 复制mkspecs\win32-msvc2015到mkspecs\win32-msvc2019 修改qmake.conf ...
- Mint UI中的坑:datetime-picker在PC浏览器上可以显示弹出的日期选择,但是在手机上是空白
在网上搜了一下,发现,在根组件App.vue上写入这个就可以了
- 在platformio自动上传esp8266固件
不想每次上传固件的时候手工点按钮,修改这个文件:C:\Users\你的登录名.platformio\platforms\espressif8266\builder\main.py 在319行UPLOA ...
- CSP-S T3函数调用
函数是各种编程语言中一项重要的概念,借助函数,我们总可以将复杂的任务分解成一个个相对简单的子任务,直到细化为十分简单的基础操作,从而使代码的组织更加严密.更加有条理.然而,过多的函数调用也会导致额外的 ...
- c基础语法-常用关键字
变量 在计算机中,整数是以补码形式存放的.所以如果整数的最高位是1,有符号数的话就是负数:如果是无符号数,则都表示正数 整形 int ->32 -2^31~2^31无符号整形 unsigned ...
- PowerShell学习笔记一_cmdlet、管道、如何入门
PowerShell文件: .ps1 脚本文件 .psm1 模块文件 .psd1 模块描述文件 cmdlet(命令行) 组成: 动词-名词,例如: 1. Get-Service(获取所有服务),类似于 ...
- vue-awesome-swiper使用中的一些问题
项目中使用了vue-awesome-swiper,发现autoplay不能用.网上找了半天,说是版本问题.最后在main.js中添加以下代码解决. import VueAwesomeSwiper fr ...
- tomcat8 无法解析 请求url 中 包含 [: 或者 :] 等特殊符号
使用如下URL: http://127.0.0.1:8080/xx/[:xOGxeSSk5ENaYh89ziEFJA==:].do 如果使用tomcat8 无法正常访问,浏览器network 报错 4 ...
- Python3 文件处理相关脚本
对文件相关处理是脚本中最常见的,下面列举几种实用的案例: 批量删除: (1)删除指定目录,指定后缀文件 例:删除目录J:/start下的 .log与.tmp结尾文件 def del_files(pat ...
- 87、linux root 密码忘记了
子账户登录,然后重置即可