安卓15已获取到读取文件权限,但只能访问图片和视频,无法访问txt文件如何解决呢?

1.权限代码,确认已经获取到权限:

 private void getPer() {
        String[] pers={
       Permission.READ_MEDIA_AUDIO,Permission.READ_MEDIA_VIDEO,
        Permission.READ_MEDIA_IMAGES,Permission.READ_MEDIA_VISUAL_USER_SELECTED};
        XXPermissions.with(this)
                // 申请单个权限
                .permission(pers)
                // 申请多个权限
                // 设置权限请求拦截器(局部设置)
                //.interceptor(new PermissionInterceptor())
                // 设置不触发错误检测机制(局部设置)
                //.unchecked()
                .request(new OnPermissionCallback() {

                    @Override
                    public void onGranted(@NonNull List<String> permissions, boolean allGranted) {
                        if (!allGranted) {
//                            toast("获取部分权限成功,但部分权限未正常授予");

                            ToastUtils.showShort("获取部分权限成功,但部分权限未正常授予");

                        }
//                        toast("获取录音和日历权限成功");
                        ToastUtils.showShort("获取权限成功");
                    }

                    @Override
                    public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {
                        if (doNotAskAgain) {
//                            toast("被永久拒绝授权,请手动授予录音和日历权限");
                            // 如果是被永久拒绝就跳转到应用权限系统设置页面
                            XXPermissions.startPermissionActivity(Temp2Activity.this, permissions);
                        } else {
//                            toast("获取录音和日历权限失败");
                        }
                        ToastUtils.showShort("获取权限失败");
                    }
                });

    }

2.读取txt文件内容:

       findViewById(R.id.btn_read).setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {

               ///storage/emulated/0/My1624/sea.jpg
               File sdCard = Environment.getExternalStorageDirectory();
               File dir = new File(sdCard.getAbsolutePath() + "/My1624/aaa.txt");
//               File dir = new File(sdCard.getAbsolutePath() + "/My1624/sea.jpg");
               String absolutePath = dir.getAbsolutePath();
//               Log.d("1629","dir= "+absolutePath);
               String text = readTxt(dir.getAbsolutePath());
               Log.d("1645","text= "+text);
           }
       });
阅读 182
1 个回答

需要在 AndroidManifest 申请读写sdka权限,如果你还需要直接使用sd卡绝对路径访问文件,还需要在 application 标签下添加

        android:requestLegacyExternalStorage="true"

并且需要动态申请sd卡读取权限

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题