2017-02-23 29 views
0

Я написал сервис, который содержится в APK. В этом APK у меня вообще нет активности. Определение выглядит следующим образом:утра startervice не имеет сетевого разрешения

<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> 

Я скомпилировал его и установить APK установки в реальном телефоне Android с помощью часов, и я пытаюсь запустить эту услугу с помощью этой команды:

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

Эта услуга может правильно загрузиться. Но, похоже, эта служба не имеет разрешения на работу в сети. как это отправить запрос, я получил следующие ошибки:

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) 

Я определенно уверен, что домен bf.xxxx.com достижим с помощью этого мобильного телефона.

И я сделал небольшое изменение, добавив пустое действие в этом APK и переустановил его. Сначала я запустил операцию на экране, а затем начал службу через am launchervice. В это время сервис работает очень хорошо.

Мой вопрос в том, почему у службы нет разрешения на работу в сети, если есть только служба загрузки 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

И какая версия Android? – Timo

ответ

0

Если вы используете версию Android> 6 вы должны запросить разрешение : Doc

EDIT:

Я не уверен, что б разрешение вашей службы зависит от разрешения активности, запустившей службу, поэтому вам нужно указать в своем манифесте, когда вы определяете свою службу, нужно разрешение, которое вам нужно посмотреть. here раздел: андроид: разрешение

+0

Моя версия для Android на этом мобильном телефоне - 4.4.4 – simonzhang

+0

Посмотрите на EDIT – Timo