BroadcastReceiver не ловит кастомные action

204
26 апреля 2018, 11:42

Проблема заключается в том что BroadcastReceiver никаким образом не реагирует на кастомные action которые я отправляю, а с системными он работает отлично. Кто знает в чем может быть проблема? Заранее спасибо за ответ!

Манифест

<application
        android:allowBackup="true"
        android:icon="@mipmap/icon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".auth.LoginActivity"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".mainactivity.MainActivity"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity android:name=".addtaskactivity.AddTaskActivity" />
        <activity
            android:name=".settingsactivity.SettingsActivity"
            android:theme="@style/AppTheme" />
        <receiver
            android:name="packagename.ExecuteTaskReceiver"
            android:exported="false"
            android:enabled="true">
            <intent-filter>
                <action android:name="packagename.TASK_DONE"/>
            </intent-filter>
        </receiver>

    </application>

Ресивер

public class ExecuteTaskReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"SSSSSSS",Toast.LENGTH_LONG).show();
        NotificationManager mNotifyMgr =
                (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
                .setContentTitle(intent.getStringExtra(AppKeys.TASK_TITLE))
                .setOngoing(false)
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setAutoCancel(true);
        Intent i = new Intent(context, MainActivity.class);
        PendingIntent pendingIntent =
                PendingIntent.getActivity(
                        context,
                        0,
                        i,
                        PendingIntent.FLAG_ONE_SHOT
                );
        Uri uri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        mBuilder.setSound(uri);
        mBuilder.setContentIntent(pendingIntent);
        mNotifyMgr.notify(12345, mBuilder.build());
    }
}

AlarmManager

Context context = mTaskView.getContext();
        AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent();
        intent.setAction(AppKeys.TASK_DONE);
        //intent.setClass(context, ExecuteTaskReceiver.class);
        intent.putExtra(AppKeys.TASK_TITLE, mTask.getTitle());
        mTaskView.getContext().sendBroadcast(intent);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_ONE_SHOT);
        am.set(AlarmManager.RTC_WAKEUP, getTaskTime().getTimeInMillis(), pendingIntent);
Answer 1

В случае Андроид 8+ нужно точно задавать получателя в интенте:

Intent intent = new Intent(context, ExecuteTaskReceiver.class);
intent.setAction(AppKeys.TASK_DONE);

Либо регать получателя в рантайме.
https://developer.android.com/about/versions/oreo/background.html#broadcasts

READ ALSO
Вывод HashMap в окно JFrame [требует правки]

Вывод HashMap в окно JFrame [требует правки]

Появилось небольшое курсовое заданиеЯ передаю данные с телефона на компьютер по Wi-Fi через сокеты

181
Как получить текст между определёнными HTML-тегами с помощью Jsoup

Как получить текст между определёнными HTML-тегами с помощью Jsoup

Я делаю парсер для одной веб-страницы с помощью Jsoup, и мне нужно, чтобы он получал текст, заключённый между тегами <h5> и </h5>Как это сделать?

211
добавление модуля Import .JAR/.AAR Package

добавление модуля Import .JAR/.AAR Package

Не могу добавить библиотеку ниJAR ни

217
Не могу подключиться к БД (Oracle) при помощи JDBC Thin driver

Не могу подключиться к БД (Oracle) при помощи JDBC Thin driver

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

273