2017-02-09 17 views
0

私はちょうど修正できないような問題に直面しました。Androidサービスの例外 - 許可が拒否されました。インターネットのアクセス許可がありません

2つのシナリオでは、最初にユーザーがMainActivityのメソッドを起動してWeb要求を行うボタンをクリックします。これは問題なく動作します。

2番目のシナリオでは、コードがサービスに移動するとすぐに、この要求をバックグラウンドで実行されているサービスで実行したいので、許可例外が発生します。

Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?) 

私はサービスを完全にうまく起動できますが、サービスにネットワーク要求を移すと、私は許可の問題に陥ります。

AndroidManifest.xmlにはすでに<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>があります。

サービスを開始する前に私のMainActivityでリアルタイムパーミッションチェック(SDK 23+)もしていますが、これはサービスが取得するパーミッションには何の影響もないようです。

アイデア?あなたがtrueisolateProcessを使用してい

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="domain"> 

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     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> 
    <service 
     android:name="domain.RemoteCommunicationService" 
     android:isolatedProcess="true" 
     android:exported="true"> 
    </service> 
    <receiver android:name="domain.RemoteServiceRestartReceiver" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="domain.RemoteServiceRestart"></action> 
     </intent-filter> 
    </receiver> 
    <receiver android:name="domain.RemoteCommunicationService$RemoteCommunicationReceiver" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="domain.RemoteCommunication.ToggleLight"></action> 
     </intent-filter> 
    </receiver> 
</application> 

+0

は –

+0

@Jonasを投稿するDマニフェストファイルを表示し、あなたのマニフェストとあなたのSDKは何であるかその23またはアップあなたかもしれませんランタイムパーマ –

+0

を追加しましたマニフェストファイルを必要とする - 問題は、私のメインで、RemoteCommuincationServiceで発生していませんアクティビティ。 –

答えて

1

trueに設定すると、このサービスはシステムの残りの部分から分離され、独自の権限を持たない特別なプロセスで実行されます。それとの唯一の通信は、サービスAPI(バインドと開始)です。

+0

omfg ...私は解決策を見つけるのに何時間も費やしました...ありがとうございます! –

+0

あなたは大歓迎です...あなたの問題を解決した場合には受け入れることを忘れないでください – d1vivek681065

+0

オプションが利用可能になったら、数分で私はします:) –

関連する問題