Android packageInfo.requestedPermissions返回不正确的权限

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

这是我的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-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
    }
}