例如,我想创建一个每 5 分钟工作一次的通知。为此,我使用 BroadCastReceiver。这是我的代码:
public void notifyMe()
Calendar calendar = Calendar.getInstance() ;
calendar.set(Calendar.HOUR,0);
calendar.set(Calendar.MINUTE,5);
calendar.set(Calendar.SECOND,0);
Log.d("tagger",calendar.getTime().toString());
Intent intent = new Intent(this,MyBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),5*60*1000,sender);
}
也适用于接收器:
public class MyBroadcastReceiver extends BroadcastReceiver {
private static final int NOTIFY_ID = 101;
@Override
public void onReceive(Context context, Intent intent) {
Log.d("BroadcastReceiver", "debut receive");
Intent resultIntent = new Intent(context,DetailActivity.class) ;
PendingIntent resultPendingIntent = PendingIntent.getActivity(context,
0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder mBuilder = new Notification.Builder(context)
.setContentTitle("title")
.setContentText("some text");
mBuilder.setAutoCancel(true);
mBuilder.setContentIntent(resultPendingIntent);
int id = 001 ;
NotificationManager mNotifyManager = (NotificationManager)context.getSystemService(Application.NOTIFICATION_SERVICE);
mNotifyManager.notify(id,mBuilder.build());
}
}
显现:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:name=".PrefsApplication"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailActivity" />
<activity android:name=".ActionsActivity"
></activity>
<receiver android:name=".MyBroadcastReceiver">
</receiver>
</application>
什么不起作用?我没有忘记将接收器添加到清单中。我需要使用 Service 而不是 Receiver?
notifyMe()
设置重复闹钟的更新方法如下:
public void notifyMe()
// Current time
Calendar calendar = Calendar.getInstance() ;
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 0);
Log.d("tagger", calendar.getTime().toString());
Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Set alarm
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5*60*1000, sender);
// Or you can also use
//am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5*60*1000, sender);
}
更新MyBroadcastReceiver
如下:
public class MyBroadcastReceiver extends BroadcastReceiver {
private static final int NOTIFY_ID = 101;
@Override
public void onReceive(Context context, Intent intent) {
Log.d("BroadcastReceiver", "debut receive");
// Intent to start activity
Intent resultIntent = new Intent(context, DetailActivity.class) ;
PendingIntent resultPendingIntent = PendingIntent.getActivity(context,
0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification mNotification = new Notification.Builder(context)
.setContentTitle("Title")
.setContentText("Some text")
.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(true)
.setContentIntent(resultPendingIntent).build();
NotificationManager mNotifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyManager.notify(NOTIFY_ID, mNotification);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句