赞
踩
需求是读取sdcard上txt文件
Android13(targetSDK = 33)上取消了WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE权限。
取而代之的是READ_MEDIA_VIDEO,READ_MEDIA_AUDIO,READ_MEDIA_IMAGES权限
测试发现,即便动态申请上面三个权限,仍旧无法读取本地txt文件
AndroidManifest.xml中增加android.permission.MANAGE_EXTERNAL_STORAGE权限
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools">
- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
- <application
- android:allowBackup="true"
- android:dataExtractionRules="@xml/data_extraction_rules"
- android:fullBackupContent="@xml/backup_rules"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
- android:supportsRtl="true"
- android:theme="@style/Theme.LocationDemo"
- tools:targetApi="31">
-
-
- <activity
- android:name=".MainActivity"
- android:exported="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
-
-
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
-
- </manifest>

Activity中新增代码
- // 方案一:跳转到系统文件访问页面,手动赋予
- Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
- intent.setData(Uri.parse("package:" + this.getPackageName()));
- startActivity(intent);
- // 方案二:跳转到系统所有需要文件访问页面,选择你的APP,手动赋予权限
- Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
- startActivity(intent);
作者:OpenGL
链接:https://juejin.cn/post/7283152332622610492
关注我获取更多知识或者投稿
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。