Android6.0以上文件读写问题

在开发项目中,遇见要进行文件操作,遇见Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)错误(如下权限已经添加)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
原来是android 6.0之上的系统除了添加权限还要在你报错的代码前面添加请求权限的代码,如下:
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
   Manifest.permission.READ_EXTERNAL_STORAGE,
   Manifest.permission.WRITE_EXTERNAL_STORAGE };


public static void verifyStoragePermissions(Activity activity) {
   // Check if we have write permission
   int permission = ActivityCompat.checkSelfPermission(activity,
         Manifest.permission.WRITE_EXTERNAL_STORAGE);
   if (permission != PackageManager.PERMISSION_GRANTED) {
      // We don't have permission so prompt the user
       ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
            REQUEST_EXTERNAL_STORAGE);
      }
   }

使用时,直接调用verifyStoragePermissions函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 6.0之后,需要动态申请权限才能访问一些敏感的权限,例如读写存储权限。为了获取拍照+本地存储权限,您可以按照以下步骤操作: 1. 在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> ``` 2. 在Android 6.0及以上,您需要动态请求这些权限。在您的Activity中添加以下代码: ```java if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, REQUEST_CODE_PERMISSIONS); } ``` 其中,REQUEST_CODE_PERMISSIONS是您自定义的请求码。 3. 在您的Activity中实现onRequestPermissionsResult方法,以处理用户的权限请求响应: ```java @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE_PERMISSIONS) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 用户已经授权,可以执行相应操作,如拍照等 } } } ``` 在用户授权后,您就可以执行相应的操作,例如拍照并将照片保存到本地存储中了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值