Я пытаюсь создать приложение-службу без интерфейса/активности. Услуга начнется с BOOT_COMPLETED. В настоящее время у меня возникает проблема, когда служба-получатель не может запустить главную службу.Приложение AutoStart на BOOT_COMPLTED не может начать службу Intent not found
Звук ошибки как то (монитор Android Device):
Тэг: Руководитель направления Текст: Невозможно запустить службу Intent {CMP = com.remote.cat/.ActionService} U = 0: не найдено
Мой андроид версия ОС на устройстве 4.2.2
Я проверяю его с помощью этой команды в PowerShell:
adb.exe shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.remote.cat/.AutoStartServiceReceiver
Оба SERVI ces находятся в корне пакета com.remote.cat
Почувствуйте, что я пропустил небольшую вещь или опечатку, был бы очень признателен за любую помощь! Спасибо!
Вот код манифеста:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.remote.cat"
android:installLocation="internalOnly">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application android:allowBackup="true" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme">
<receiver android:name="com.remote.cat.AutoStartServiceReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
<service android:name="com.remote.cat.AutoStartServiceReceiver"></service>
<service android:name="com.remote.cat.ActionService"></service>
</manifest>
Вот класс brodcastreceiver:
package com.remote.cat;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AutoStartServiceReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
{
Intent serviceIntent = new Intent(context, ActionService.class);
//Intent serviceIntent = new Intent("com.remote.cat.ActionService");
context.startService(serviceIntent);
}
}
}
Вот основной сервис, который я пытаюсь начать:
package com.remote.cat;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
import java.util.TimerTask;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ActionService extends Service
{
private ScheduledThreadPoolExecutor executor = null;
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
executor = new ScheduledThreadPoolExecutor(4);
final ScheduledFuture<?> handle = executor.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "one minute message", Toast.LENGTH_LONG).show();
}
}, 0, 8, TimeUnit.SECONDS);
return START_STICKY;
}
}
это объявление службы. Я считаю, что это должно быть. Ну, я все равно попробовал. Не помогло ... :( Объявление получателя находится в теге . –
GreenDeveloper
В дополнение к тому, что получатель, объявленный как таковой в манифесте (а не услуге), ваше приложение также должно запускаться пользователем вручную в первый раз До тех пор, пока это не произойдет, система считает приложение отключенным и не выполнит загрузку. После того, как приложение начнет работу вашего приложения один раз, оно начнет доставку широковещательной передачи. –