BootReceiver не работает

Я знаю, что об этом спрашивали множество раз, и в Интернете есть сотни примеров, но я хочу понять, что не так в моем коде. Как следует из названия, я хочу выполнить некоторый код при включении телефона, в частности, я хочу установить несколько сигналов тревоги для получения уведомлений, но это не актуально, моя проблема в том, что метод onReceive загрузочного приемника никогда не вызывается, по-видимому

У меня есть права доступа в манифесте:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

И я также зарегистрировал получателя в манифесте

<receiver
  android:name=".BootBroadcastReceiver"
  android:enabled="true" >
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
</receiver>

И я уже создал класс приемника

public class BootBroadcastReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context pContext, Intent intent) {
    Toast.makeText(pContext,"waiting for debugger",Toast.LENGTH_LONG).show();
    android.os.Debug.waitForDebugger();
    //Stuff for the alarms
}

}

Может кто-нибудь объяснить мне, что я терплю неудачу, не публикуя всегда одни и те же примеры, которые я вижу везде? Я хочу знать, что не так в моем коде, а не как это нужно делать.

PS:: Я забыл сказать, что мне нужно остановить код для отладки тревожных событий, но я не думаю, что это проблема, так как он даже не показывает Toast.ОБНОВЛЕНИЕ: полный манифест

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="feddycapdev.conapo.turnario" >
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Calendario"
            android:label="@string/title_activity_calendario"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".Settings_Activity"
            android:label="@string/title_activity_settings_" >
        </activity>
        <activity
            android:name=".SettingGiorno"
            android:label="@string/title_activity_setting_giorno" >
        </activity>
        <receiver
            android:name=".BootBroadcastReceiver"
            android:enabled="true" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
        <service android:enabled="true" android:name=".WebNotificChecker" />
        <service android:enabled="true" android:name=".Sveglia" />
        <service android:enabled="true" android:name=".NotificaVigilanza" />
    </application>
</manifest>

1 ответ

Решение

Я должен запустить деятельность до получателя?

Что-то должно использовать явное Intent запустить один из компонентов вашего приложения до того, как сработают все зарегистрированные в манифесте получатели. Для 99% приложений Android это означает, что пользователь должен запустить ваше приложение с домашнего экрана. Если ваше приложение служит плагином для какого-либо другого приложения, вам может не потребоваться действие - пожалуйста, обсудите это с разработчиками приложения, которое будет размещать ваш плагин.

как установить уведомление, если пользователь не открывает активность?

Вы не установили бы уведомление, если пользователь не открывает действие. Ваше приложение будет работать только тогда, когда пользователь позволит вам запустить. Если пользователь решит не запускать ваше приложение или если он выберет "Принудительную остановку" вашего приложения из настроек, ваш зарегистрированный получатель манифеста не будет принимать трансляции.

Другие вопросы по тегам