我正在尝试从adb shell启动服务。已有类似的问题:How to start and stop android service from a adb shell? 但是,当我开始服务时:
adb shell am startservice com.mypackage/com.mypackage.service.MyService
我收到此消息:
Starting service: Intent { act=android.intent.action.VIEW dat=com.mypackage/com.mypackage.service.MyService }
Error: Not found; no service started.
我在AndroidManifest.xml中声明服务:
<application>
...
<service
android:name="com.mypackage.service.MyService"
android:label="@string/local_service_label"
android:icon="@drawable/ic_launcher">
</service>
</application>
你知道如何解决这个问题吗? 谢谢!
答案 0 :(得分:13)
adb shell am startservice -n com.mypackage/.service.MyService
-n
添加'line_no:'前缀
答案 1 :(得分:4)
就我而言,服务无法启动的是com.android.tools.fd.runtime.InstantRunService
。
启动服务:Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] cmp = com.xxx.xxx / com.android.tools.fd.runtime.InstantRunService} 错误:未找到;没有服务开始。
原来我的android设备丢失了一些东西。要将其停用,请转到preferences > Build, Execution, Deployment > Instant Run
并取消选中Enable Instant Run to hot swap code/resource changes on deploy (default enabled)
。
根据截图,保留它更好,事实上,我对这个功能更满意。至少我跑了额外的日志记录并发送反馈到谷歌。我刚刚需要一个构建asap,所以今天没有立即运行;)
答案 2 :(得分:3)
考虑以下作为例子
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
<service
android:name=".MyService"
android:description="@string/Desciption"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.nandhan.myservice" />
</intent-filter>
</service>
</application>
然后我会按以下方式启动服务
adb shell am startservice com.nandhan.myservice / .MyService
答案 3 :(得分:1)
清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.xyz.path">
...
<application
...
<service android:name=".MyService">
<intent-filter>
<action android:name="com.xyz.path.MY_SERVICE" />
</intent-filter>
</service>
...
命令:
adb shell am startservice -n com.xyz.path/.MyService