Ответ 1
adb shell am startservice -n com.mypackage/.service.MyService
-n
добавляет префикс 'line_no:'
Я пытаюсь запустить службу из оболочки adb. Там уже есть аналогичный вопрос: Как запустить и остановить службу Android из оболочки adb? Однако, когда я начинаю работать с:
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>
Есть ли у вас идеи, как это решить? Спасибо!
adb shell am startservice -n com.mypackage/.service.MyService
-n
добавляет префикс 'line_no:'
В моем случае служба, которая не запускалась, была 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)
.
В соответствии с этим снимком экрана, лучше сохранить его и, действительно, я буду более счастлив с этой функцией. По крайней мере, я работал с дополнительным протоколированием и отправлял отзывы в google. Мне просто нужна была сборка, поэтому мгновенный запуск для меня сегодня;)
Рассмотрим ниже в качестве примера
<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
манифеста:
<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