Android 仅当应用程序处于活动状态时,BroadcastReceiver才工作
我尝试在特定时间发送通知,即使应用程序未处于活动状态 但它只在应用程序处于活动状态(打开)时起作用 立即创建Android 仅当应用程序处于活动状态时,BroadcastReceiver才工作,android,broadcastreceiver,alarmmanager,android-notifications,Android,Broadcastreceiver,Alarmmanager,Android Notifications,我尝试在特定时间发送通知,即使应用程序未处于活动状态 但它只在应用程序处于活动状态(打开)时起作用 立即创建 Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION"); notificationIntent.addCategory("android.intent.category.DEFAULT"); PendingIntent broadcast = P
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, (System.currentTimeMillis() + (5 * 1000)), broadcast);
接收者类别:
public class AlarmReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent it = new Intent(context, StartActivity.class);
createNotification(context, it, "new mensage", "body!", "this is a mensage");
}
public void createNotification(Context context, Intent intent, CharSequence ticker, CharSequence title, CharSequence descricao) {
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent p = PendingIntent.getActivity(context, 0, intent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setTicker(ticker);
builder.setContentTitle(title);
builder.setContentText(descricao);
builder.setSmallIcon(R.drawable.icon);
builder.setContentIntent(p);
Notification n = builder.build();
//create the notification
n.vibrate = new long[]{150, 300, 150, 400};
n.flags = Notification.FLAG_AUTO_CANCEL;
nm.notify(R.drawable.icon, n);
//create a vibration
try {
Uri som = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone toque = RingtoneManager.getRingtone(context, som);
toque.play();
} catch (Exception e) {
}
}
}
androidmanifest:
<receiver android:name="com.example.atefhares.study_organizer.notifications_related.AlarmReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.media.action.DISPLAY_NOTIFICATION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
任何人都知道如何解决这个问题,请???在哪里定义了可变报警?在使用线上方如果从内存中删除活动后它处于活动级别,则报警管理器也会发生同样的情况如果活动不在内存中,则有什么解决方案可以使其工作?在哪里定义了可变报警?在使用线上方如果活动删除后它处于活动级别从内存中删除AlarmManager也会发生同样的情况。如果活动不在内存中,是否有任何解决方案使其工作?