这是我的Android应用程序的预定通知代码,但由于某种原因它什么也没做。请告诉我问题出在哪里。 另一个问题:我也发了一个按钮发送通知 - 只是为了学习,并且由于某种原因它只适用于我的三星s6。当我在android studio模拟器上运行应用程序时,它给出了一个关于通知包的错误。这是为什么? 非常感谢!
public void setAlarm(View view) {
Long alertTime = new GregorianCalendar().getTimeInMillis()+5*1000;
Intent alertIntent = new Intent(this, AlertReceiver.class);
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime,
PendingIntent.getBroadcast(this, 1, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
}
}
public class AlertReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
createNotification(context, "Time Up", "5 Seconds Has Passed", "Alert");
}
public void createNotification(Context context, String msg, String msgText, String msgAlert) {
PendingIntent noficitIntent = PendingIntent.getActivity(context, 0,
new Intent(context, MainActivity.class), 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(msg)
.setTicker(msgAlert)
.setContentText(msgText);
mBuilder.setContentIntent(noficitIntent);
mBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
}
}
答案 0 :(得分:0)
根据您的评论,您似乎忘了注册您的BroadcastReceiver。根据Android文档,如果您先注册,您将只能在接收器上接收意图:
您可以使用Context.registerReceiver()动态注册此类的实例,也可以在AndroidManifest.xml中静态声明带有标记的实现。
由于您将广播直接发送到您的接收器:
Intent alertIntent = new Intent(this, AlertReceiver.class);
为此声明任何intent-filter
毫无意义,因此您只需将以下行添加到AndroidManifest.xml(<application>
标记内):
<receiver android:name="com.your.package.AlertReceiver" />
希望它有所帮助。