Android adb shell am startservice: ошибка не найдена

Я пытаюсь запустить службу из оболочки 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>

Есть ли у вас идеи, как это решить? Спасибо!

Ответ 1

adb shell am startservice -n com.mypackage/.service.MyService

-n добавляет префикс 'line_no:'

Ответ 2

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

Ответ 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

Ответ 4

манифеста:

<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