【发布时间】:2016-12-18 14:23:35
【问题描述】:
我会尽量简短。有一个应用程序在所有 API 级别 22 及以下设备上正常运行,但是对于 22 以上的新版本具有有关权限的规则的新实现,我在尝试获取文件时收到此错误消息,指出无法找到它,因为我没有'没有正确的权限。
自然,在询问之前,我做了一些谷歌搜索,发现人们通过将“uses-sdk”AndroidManifest 标记中的 targetSdkVersion 设置为 22 来解决这个问题。我这样做了,甚至在清单中添加了权限,但我仍然收到此错误。
这是整个清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.packagename.appname">
<uses-sdk android:targetSdkVersion="22"></uses-sdk>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature
android:name="android.hardware.camera.any"
android:required="true" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
那么这里的交易是什么?
我应该提到该应用程序在 API 22 设备上完美运行,并且我已经检查过,文件的路径是相同的,所以据我所知,这是一个权限问题。
【问题讨论】:
-
"将 'uses-sdk' AndroidManifest 标签中的 targetSdkVersion 设置为 22" -- 如果您使用 Android Studio 进行开发,通常
targetSdkVersion设置在模块的build.gradle文件中(例如,app/build.gradle)。此外,Gradle 中的值会覆盖<uses-sdk>中的值。通常,我们在 manifest 中去掉<uses-sdk>并使用 Gradle 来处理minSdkVersion和targetSdkVersion。确保您的 22 未被 Gradle 设置覆盖。 -
你又来救我了。发现。像魅力一样工作。