Moh*_*mir 24 java android android-studio
我正在开发一个应用程序。我将不同的文件类型(例如 docx、pdf、zip)上传到 WAMP 服务器。以下是我的内部存储的文件路径。
/storage/emulated/0/WhatsApp/Media/WhatsApp Documents/api.txt
我已在清单文件中添加并允许存储权限,并在运行时读取文件。但是,没有可用的内部存储权限请求。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
对于 Android 10 我也使用了这个属性
android:requestLegacyExternalStorage="true"
Run Code Online (Sandbox Code Playgroud)
但当我从内部存储读取文件进行上传时,我在三星 Galaxy 上的 Android 11 操作系统(又名 Android R)上收到此错误。
java.io.FileNotFoundException:/storage/emulated/0/WhatsApp/Media/WhatsApp Documents/api.txt:打开失败:EACCES(权限被拒绝)
对于 Android 11 或更高版本,请在 Activity 的 onCreate() 上使用以下代码。它将运行一次并请求许可。
if (Build.VERSION.SDK_INT >= 30){
if (!Environment.isExternalStorageManager()){
Intent getpermission = new Intent();
getpermission.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivity(getpermission);
}
}
Run Code Online (Sandbox Code Playgroud)
接下来在清单中声明 MANAGE_EXTERNAL_STORAGE 权限。
但是,此方法的问题是,如果您没有充分的理由说明为什么需要访问所有文件,则无法将其上传到 Play 商店。
您可以尝试在应用程序标记中使用android:preserveLegacyExternalStorage="true"清单文件中的标记。该标签用于访问 android 11 设备中的存储。有关更多详细信息,请点击此链接,它将根据您的要求向您进行更多解释。
我搜索了很多时间并得到了添加<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>在清单文件中的解决方案,并尝试在 android 11 手机中获取文件访问权限。然后您将打开并从存储中读取该文件。
但问题是 Play 商店不允许您MANAGE_EXTERNAL_STORAGE在应用程序中使用该权限。向开发人员授予访问权限以使用它来访问所有文件需要一些时间。
这是链接
在 Android 11 设备上,您的应用只能访问自己的文件。
以及公共目录中的一般媒体。
尝试列出该 Whatsapp 目录中的文件,您会发现它们未列出。
您有两个选项来读取该文件。
| 归档时间: |
|
| 查看次数: |
55652 次 |
| 最近记录: |