本文主要是介绍Android 6.0以后的版本报错:open failed: EACCES (Permission denied),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
就上篇文章来说遇到的问题,在华为手机7.0上面,保存相册到手机没有任何问题,但是在我的小米手机保存就出现了这个问题
open failed: EACCES (Permission denied)
遇到事情不能慌,先冷静一下
思索再三觉得是没有动态申请但是7.0手机怎么可以呢?抽风啊,
百度一下吧参考这篇博文附上链接
Android 6.0以后的版本报错:open failed: EACCES (Permission denied) - 云+社区 - 腾讯云
于是我就按照上面操作了一番
步骤如下:
1.检查AndroidManifest.xml文件中是否配置了权限
<!-- 储存卡的读写权限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.是否创建了src/main/res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" /><certificates src="user" /></trust-anchors></base-config>
</network-security-config>
3.针对10.0版本以上有个缓存区需要在AndroidManifest.xml文件的Application中添加
android:requestLegacyExternalStorage="true"
4.看有的博文说需要将compileSdkVersion版本调制27以下(ps:我觉得不可行就没采取)
5.动态权限申请
if (Build.VERSION.SDK_INT >= 23) {if (ActivityCompat.checkSelfPermission(PosterActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {// 申请一个(或多个)权限,并提供用于回调返回的获取码(用户定义)ActivityCompat.requestPermissions(PosterActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STATE_CODE);} else {//通知图库更新String savePic = savePic(bitmap);//把获取到的Bitmap对象压缩图片保存到本地中sdcardimg_poster_bg.setImageBitmap(bitmap);//在把获取到的Bitmap对象在imageView中显示出来ToastUtil.showCenterToast("保存图片到相册成功");}} else {//通知图库更新String savePic = savePic(bitmap);//把获取到的Bitmap对象压缩图片保存到本地中sdcardimg_poster_bg.setImageBitmap(bitmap);//在把获取到的Bitmap对象在imageView中显示出来}
其实吧我加上这些之后还是给我提示权限问题,我就有点小慌了,起初我测试没问题打包让测试测,然后老大提出一些布局瑕疵,我就开始改,但是就出现了这个权限问题,改来改去的,最后一顿操作猛如虎,还是没有卵用,百度了好大一波,都是这个几个点,我就开始重启as,clean 甚至rebuild 不一会又好了 我也搞不懂了,其实吧这个点还是有效果的吧
先这样吧,别的也不多说了
这篇关于Android 6.0以后的版本报错:open failed: EACCES (Permission denied)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!