我写了一个服务,它包含在一个APK中。在这个APK中,我根本没有任何活动。定义如下:
<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手机上通过pm install安装了APK,我尝试通过以下命令启动这项服务:
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 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
https://stackoverflow.com/questions/42410528
复制相似问题