每天更改android状态栏通知

时间:2016-06-08 20:16:10

标签: android android-notifications

我想在状态栏上创建一个持续通知(比如当前的电池百分比 - 它总是在那里),但图标将在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中看到了一些答案,但没有任何帮助。

1 个答案:

答案 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创建扩展广播接收器类的类,并使用并启动上述服务。