Метод Broadcast onReceive не вызывается - PullRequest
0 голосов
/ 07 мая 2018

В связи с комментариями, код обновлен более подробной информацией.

Manifest.xml

<receiver
        android:name="com.x.x.x.MyReceiver"
        android:enabled="true"
        android:exported="false">

        <intent-filter>
            <action android:name="com.x.x.x.NOTIFICATION_INTENT_ACTION.TEST" />
        </intent-filter>
</receiver>

MyReceiver.java

internal class MyReceiver: BroadcastReceiver() {

    companion object {
        const val NOT_ID = ".."
        const val NOT = ".."
        const val NOTIFICATION_INTENT_ACTION = "com.x.x.x.NOTIFICATION_INTENT_ACTION.TEST"

    }

    override fun onReceive(context: Context, intent: Intent) {
        // does not get called
    }
}

CreatingIntent.java

    Intent intent = new Intent(this, MyReceiver.class);
    mPendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    if (mAlarmManager != null) {
        mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 60000L, mPendingIntent);
    }

Проблема: метод onReceive внутри класса NotRec не вызывается. Я пытался изменить Манифест на <receiver android:name="FULL_PATH.receiver.NotRec" />, но это ничего не изменило. Есть идеи?

1 Ответ

0 голосов
/ 08 мая 2018

Удалить

android:exported="false"

из декларации <receiver> в манифесте.

Если вы не «экспортируете» свой приемник, AlarmManager не сможет его запустить. Если вы помечаете компонент в манифесте как «не экспортируемый», это означает, что он является «частным», и другие приложения (включая системные приложения, такие как AlarmManager) не могут запускать или запускать компонент.

...