2017-02-23 12 views
0

サービスを作成しましたが、これはAPKに含まれています。このAPKでは、私はまったく活動していません。定義は以下の通りです:startserviceにネットワーク権限がありません

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 

    android:theme="@style/AppTheme"> 
    <service android:name="com.blackforest.service.KeyService" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.blackforest.service.KeyService"/> 
     </intent-filter> 
    </service> 
</application> 

私はそれをコンパイルし、実際のAndroid携帯電話にインストール午後経由でAPKをインストールし、私は、このコマンドを経由してこのサービスを開始しよう:

am startservice --user 0 -n com.blackforest.service/.KeyService 

このサービスすることができます正しく起動してください。しかし、このサービスにはネットワーク権限がないようです。私は、ドメインbf.xxxx.comは、この携帯電話を経由して到達可能であることは間違いなく確信して

02-23 16:22:29.685 22689-22714/com.blackforest.service W/System.err: java.net.UnknownHostException: Unable to resolve host "bf.xxxx.com": No address associated with hostname 
02-23 16:22:29.686 22689-22714/com.blackforest.service W/System.err:  at java.net.InetAddress.lookupHostByName(InetAddress.java:424) 
02-23 16:22:29.686 22689-22714/com.blackforest.service W/System.err:  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
02-23 16:22:29.686 22689-22714/com.blackforest.service W/System.err:  at java.net.InetAddress.getAllByName(InetAddress.java:214) 
02-23 16:22:29.686 22689-22714/com.blackforest.service W/System.err:  at okhttp3.Dns$1.lookup(Dns.java:39) 

:それはリクエストを送るように、私は次のエラーを得ました。

少し変更を加えて、このAPKで空白のアクティビティを追加してから、再インストールしました。最初に私はこの画面で活動を開始し、その後am startserviceでサービスを開始しました。この時点で、サービスは非常にうまく動作します。

私の質問は、APKの起動時にamコマンドでサービスしかない場合、サービスにネットワークアクセス権がない理由です。

説明が醜いですね!本当にありがとう。

全体のmanifest.xmlがある:

<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" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.WRITE_CONTACTS"/> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 

    android:theme="@style/AppTheme"> 
    <service android:name="com.blackforest.service.KeyService" 
     android:enabled="true" 
     android:exported="true" 

     > 
     <intent-filter> 
      <action android:name="com.blackforest.service.KeyService"/> 
     </intent-filter> 
    </service> 

    <activity android:name=".MainActivity"> 
    </activity> 
</application> 

PS:この携帯電話でAndroidは4.4.4

+0

全体のマニフェスト?あなたが追加した許可を見るだけで – Timo

+0

@Timoが追加されました、ありがとう – simonzhang

+0

アンドロイドのどのバージョンですか? – Timo

答えて

0

あなたは、Android> 6のバージョンを使用する場合は、許可を要求する必要があります:Doc

EDIT:

私はBわかりませんあなたのサービスの許可は、サービスを開始するアクティビティの許可に依存するので、サービスを定義する際にマニフェストで指定する必要があるアクセス許可を参照してください。hereセクション:android:permission

+0

この携帯電話の私のAndroidのバージョンは4.4.4です – simonzhang

+0

EDITを見てください – Timo

関連する問題