在' androidManifest.xml'中声明的权限,但仍然获得权限拒绝

时间:2017-10-12 14:42:07

标签: android xml cordova cordova-plugins

我是Android / Java开发的新手,我过去几天一直试图为Cordova构建一个插件,并且已经达到了它在我的执行中的地步app,但是每当我尝试执行一个函数时,我都会在adb logcat中遇到这个令人沮丧的错误:

ActivityManager: Permission Denial: Accessing service ComponentInfo{com.kddi.market.validation/com.kddi.market.validation.alml.service.ALMLService} from pid=20745, uid=10336 requires com.kddi.market.permission.USE_ALML

我使用的图书馆的文档说明了' com.kddi.market.permission.USE_ALML'必须包含在androidManifest.xml中,所以我有:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="30009" android:versionName="3.0.6" package="com.smartpass.asianvalue.skychasers" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />

    <uses-permission android:name="com.kddi.market.permission.USE_ALML" />

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>

现在已经处理了这个问题几个小时了,如果有人知道可以让我对问题可能有什么了解,我真的很感激。 我已经看到其他人通过在他们的活动中加入android:exported="true"解决了他们的问题,但这对我来说没有用,也许是沿着类似的路线?

我还尝试使用以下方法请求运行时权限:

if (action.equalsIgnoreCase("initClient")) {

    if(cordova.hasPermission("com.kddi.market.permission.USE_ALML")) {
        this.initClient(callbackContext);
    } else {
        cordova.requestPermission(this, 0, "com.kddi.market.permission.USE_ALML");
    }

    return true;
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,在使用之前未对其进行定义。我以前从未见过任何人必须使用这样的自定义权限,并且必须彼此相邻地定义和设置权限似乎也是多余的。

而不是我的&#39; androidManifest.xml&#39;只有:

<uses-permission android:name="com.kddi.market.permission.USE_ALML" />

我需要:

<permission android:name="com.kddi.market.permission.USE_ALML" />

摆在它面前。

怪异。