Android packageInfo.requestedPermissions返回不正确的权限
这是我的AndroidManifest.xml,该文件中有8个权限Android packageInfo.requestedPermissions返回不正确的权限,android,Android,这是我的AndroidManifest.xml,该文件中有8个权限 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.jiyuzhai.xxxx"> <uses
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.jiyuzhai.xxxx">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_SETTINGS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.android.vending.BILLING"/>
<application
android:name=".main.MyApplication"
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="HardcodedDebugMode"
tools:replace="android:allowBackup">
<activity
android:name="com.jiyuzhai.xxx.main.MainActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.jiyuzhai.xxx.settings.SetttingsActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-2905597280622539~7328266239" />
</application>
</manifest>
但是结果不正确,我获得了以下权限,android.permission.WRITE\u EXTERNAL\u存储丢失!!!,为什么?
[编辑]添加android sdk版本和手机状态
ext {
compileSdkVersion = 28
minSdkVersion = 17
targetSdkVersion = 28
buildToolsVersion = '28.0.3'
}
我想这个问题已经在这篇文章中得到了回答:
你是否申请/批准了那项危险的许可?如果设备运行的是Android 6.0 API级别23或更高,且应用程序的targetSdkVersion为23或更高,则在安装时不会通知用户任何应用程序权限。你的应用程序必须要求用户在运行时授予危险的权限。我以前没有遇到过这种情况,但它可能正在崩溃同一权限组中的权限,因为将授予另一个权限组?您可以通过添加一些其他权限来测试这一点。您误解了这个问题。问题不是运行时权限或访问被拒绝。这是因为packageInfo对象返回的权限列表不完整。
ext {
compileSdkVersion = 28
minSdkVersion = 17
targetSdkVersion = 28
buildToolsVersion = '28.0.3'
}
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v(TAG,"Permission is granted");
return true;
} else {
Log.v(TAG,"Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else { //permission is automatically granted on sdk<23 upon installation
Log.v(TAG,"Permission is granted");
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
//resume tasks needing this permission
}
}