我是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;
}
答案 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" />
摆在它面前。
怪异。