Автономная ошибка IntentService: невозможно запустить службу Intent {act = com.example .. pkg = com.example.somepkg} U = 0: не найдено - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь запустить автономную службу намерений из другого android клиентского приложения, и я не могу заставить его работать, даже если часами смотрю в Интернете.

Ошибка заключается в следующем:

04-02 16: 40: 32.052 2131 6557 W ActivityManager: Невозможно запустить службу Намерение {act = com.example.zorro.Sla sh pkg = com.example.cook ie } U = 0: не найдено

Приложения:

Класс объекта:

package com.example.zorro;

import android.app.IntentService;
import android.content.Intent;
import android.util.Log;

import androidx.annotation.Nullable;

public class Slash extends IntentService {
    /**
     * Creates an IntentService.  Invoked by your subclass's constructor.
     *
     * @param name Used to name the worker thread, important only for debugging.
     */
    public Slash(String name) {
        super(name);
    }

    private static final String TAG = "ZORRO";
    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        Log.d(TAG, "Hello world from Zorro Service");

    }
}

Служба намерений AndroidManifest. xml :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.zorro">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <service android:name="com.example.zorro.Slash" android:enabled = "true" android:exported = "true" />
    </application>
</manifest>

Код клиентского приложения:

package com.example.cookie;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    Intent serviceIntent = new Intent();

    @Override
    protected void onStart() {
        super.onStart();

        serviceIntent.setAction("com.example.zorro.Slash");
        serviceIntent.setPackage(this.getPackageName());
        startService(serviceIntent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

Сначала из Android Studio Я создаю службу намерений и загружаю ее в эмулятор через кнопка запуска. Я установил параметры запуска на Nothing и Deploy на Default APK .

Клиентское приложение, которое я запускаю на том же эмуляторе из другого android Студийный экземпляр.

Любые идеи будут оценены.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Похоже, что отсутствующий кусок устанавливал имя класса для намерения в коде клиента.

В частности

serviceIntent.setClassName("com.example.zorro", "com.example.zorro.Slash");
0 голосов
/ 03 апреля 2020
serviceIntent.setAction("com.example.zorro.Slash");

Ваш <service> не имеет <intent-filter> с этим <action>. Следовательно, Android не может найти услугу.

...