2017-10-12 564 views
1

我對Android/Java開發非常陌生,過去幾天我一直試圖爲Cordova構建一個插件,並且已經到了關鍵位置在其中它執行我的應用程序,但是我現在在亞行logcat得到這個令人沮喪的錯誤,每當我試圖執行一個功能:在'androidManifest.xml'中聲明的權限,但仍然獲得權限拒絕

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

如果在棉花糖及以上版本上運行,您是否正在處理運行時權限以及寫入和讀取外部存儲以及清單中所述的其他存儲。 –

+1

我試圖這樣做,但那也沒有結果,並且仍然返回相同的錯誤。以下是我如何嘗試它:'if(cordova.hasPermission(「com.kddi.market.permission.USE_ALML」))this.initClient(callbackContext); } else { cordova.requestPermission(this,0,「com.kddi.market.permission.USE_ALML」); }' –

回答

0

我已經找到了解決辦法,在使用前沒有被定義的權限。我從來沒有見過任何人必須像以前那樣使用自定義權限,而且必須相互定義和設置權限似乎有點冗餘。

而不是我的 'AndroidManifest.xml中' 只具有:

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

我需要:

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

放之前。

很奇怪。