Я создал приложение, которое должно напоминать раз в день в определенное c время, чтобы что-то делать.
Я добавил этот код в onTimeSet TimePickerDialog. (Я отлаживаю, и он проходит через код и не попадает ни в какие исключения)
По какой-то причине он никогда не попадает в onRecive моего получателя.
Это код onTimeSet:
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
tvTime.setText(hourOfDay + ":" + (minute < 10 ? "0" : "") + minute);
Calendar cal = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
Intent reciver = new Intent(getApplicationContext(), PillBroadcastReciver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, reciver, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP , cal.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
}
}
Это вещательный приемник:
publi c Класс PillBroadcastReciver расширяет BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("myAction"){
sendNotif(context);
}
}
public static void sendNotif(Context context) {
NotificationManager manager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent1 = new Intent(context,MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context,0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "notifyIdan")
.setSmallIcon(R.drawable.pill)
.setContentIntent(pendingIntent)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.pill))
.setContentTitle("Pill")
.setContentText("Pill")
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
manager.notify(100, builder.build());
}
Я также создал канал "notifyIdan"
. Это значение манифеста:
<uses-permission android:name="android.permission.SET_ALARM"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<receiver
android:name=".PillBroadcastReciver">
<intent-filter>
<action android:name="myAction"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Я вызвал функцию sendNotif
только для того, чтобы исключить, что уведомление работает и работает хорошо. Моя проблема только с onRecive - пожалуйста, помогите мне. Я должен упомянуть, что я работаю с SDK 29.