我想在状态栏上创建一个持续通知(比如当前的电池百分比 - 它总是在那里),但图标将在00:00每天更改。
此外,我希望此通知会在重启设备后自动发出警报,而不仅仅是在用户打开应用程序后。
我在MainActivity中创建了通知,但我不知道如何在重新启动后使其发出警报,而且我不知道如何在每天午夜更改它。
我尝试创建AlarmService和广播接收器但它每5秒运行一次并且它太多了所以我删除了它。
我目前的代码是:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setContentTitle(getString(R.string.notificationTitle))
.setContentText(....)
.setLargeIcon(largeIconBitmap)
.setSmallIcon(getResources().getIdentifier("icon_status_" + myHelper.getCurrentImageNumber(),"drawable", getPackageName())); // change the icon at mid-night. 'getCurrentImageNumber' should get me the right icon number
Intent resultIntent = new Intent(this, MainActivity.class);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
Notification notification = mBuilder.build();
notification.flags |= Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT;
mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(mylHelper.myRequestCode, notification);
现在我看到了一个通知,但图标没有改变,重启后也没有报警。我在stackoverflow中看到了一些答案,但没有任何帮助。
答案 0 :(得分:1)
我不会给你所有的代码,你需要通过实践来学习。
这是你应该做的:
1使用服务启动通知并维护更新通知的逻辑。如果通知已存在,您可以更新现有通知或以编程方式解除通知并替换为新通知。
2在AndroidManifest.xml中注册一个带有多个意图过滤器的广播接收器,以启动您的服务。
<receiver android:name=".myReceiver">
<intent-filter>
<action android:name="android.intent.action.TIME_TICK" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
3创建扩展广播接收器类的类,并使用并启动上述服务。