gpt4 book ai didi

java - 由于需要 READ_EXTERNAL_STORAGE 权限而崩溃,即使它在 list 中

转载 作者:行者123 更新时间:2023-11-29 20:48:17 26 4
gpt4 key购买 nike

我的任务是更新之前使用以下设置构建的 Android 应用程序:

compileSdkVersion 19
buildToolsVersion '19.0.1'

defaultConfig {
minSdkVersion 15
targetSdkVersion 19
}

我下载了最新的 Android Studio 并最终将这些更改为以下内容以构建应用程序:

compileSdkVersion 21
buildToolsVersion '21.1.2'

defaultConfig {
minSdkVersion 15
targetSdkVersion 19
}

之前构建的应用程序运行完美,没有任何崩溃。不幸的是,当我现在构建它时,应用程序崩溃并出现以下异常:

Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=2476, uid=10053 需要 android .permission.READ_EXTERNAL_STORAGE,或 grantUriPermission()

即使许可在 list 中明确:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.dbotha.app">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

崩溃发生在为 MediaStore.Images.Media.EXTERNAL_CONTENT_URI 加载光标时:

new CursorLoader(
this,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[]{
MediaStore.Images.Media._ID,
MediaStore.Images.Media.BUCKET_ID,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
MediaStore.Images.Thumbnails._ID
},
null,
null,
null
);

除了撕掉整个组件并从头开始重新实现之外,我有点不知所措 - 我宁愿避免这种情况 ;)

最佳答案

事实证明,项目依赖项在 AndroidManifest.xml 的库中有一个 maxSDKVersion 属性用于这些权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

在 list 合并过程中,该属性将被包含在内并破坏运行在 API 版本 18 以上的任何设备。

解决此问题的一种方法是添加以下应用程序 list ,以确保 maxSdkVersion 属性不会进入合并后的 AndroidManifest.xml:

<manifest
xmlns:tools="http://schemas.android.com/tools"
...>

<uses-permission tools:node="replace" android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
<uses-permission tools:node="replace" android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

关于java - 由于需要 READ_EXTERNAL_STORAGE 权限而崩溃,即使它在 list 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29844348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com