首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >am startservice没有网络权限

am startservice没有网络权限
EN

Stack Overflow用户
提问于 2017-02-23 16:29:57
回答 1查看 213关注 0票数 0

我写了一个服务,它包含在一个APK中。在这个APK中,我根本没有任何活动。定义如下:

代码语言:javascript
复制
<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,我尝试通过以下命令启动这项服务:

代码语言:javascript
复制
am startservice --user 0 -n com.blackforest.service/.KeyService

此服务可以正确启动。但是这个服务似乎没有网络权限。当它发送请求时,我得到了以下错误:

代码语言:javascript
复制
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是:

代码语言:javascript
复制
<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

EN

回答 1

Stack Overflow用户

发布于 2017-02-23 16:37:01

如果您使用的是Android >6的版本,则需要申请权限:Doc

编辑:

我不确定,但你的服务的权限取决于启动服务的活动的权限,所以当你定义你的服务时,你需要在你的清单中指定它需要的权限看看here部分:android:here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42410528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档