Проблема заключается в том что 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);
В случае Андроид 8+ нужно точно задавать получателя в интенте:
Intent intent = new Intent(context, ExecuteTaskReceiver.class);
intent.setAction(AppKeys.TASK_DONE);
Либо регать получателя в рантайме.
https://developer.android.com/about/versions/oreo/background.html#broadcasts
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Появилось небольшое курсовое заданиеЯ передаю данные с телефона на компьютер по Wi-Fi через сокеты
Я делаю парсер для одной веб-страницы с помощью Jsoup, и мне нужно, чтобы он получал текст, заключённый между тегами <h5> и </h5>Как это сделать?
Извиняюсь за возможно глупый вопрос, я новичок и только разбираюсь