5

我正在为 AndroidNotification 使用自定义 RemoteView,并且我想模仿系统行为。

Android 如何更新它的通知时间格式——一旦设置它们会改变吗?我怎样才能模仿这种行为?

4

4 回答 4

2

我不太了解通知时间格式,但如果你想模仿他们的行为,应该看看这个DateUtils类,尤其是我认为你所描述的formatSameDayTime 。

于 2013-03-02T04:30:43.537 回答
2

添加后无法更新通知,除非使用相同的 ID 再次调用 .notify。

如果处理时间戳,最好使用原生的 Notification NotificationCompat.Builder 而不使用 RemoteViews。

于 2013-03-06T00:12:07.707 回答
0

鉴于您自己提供了答案,我不确定您是否仍在寻找答案。但是,如果您希望实现最初的目标,您可能会想要

  • 每当时间改变时重建 RemoteView(这更容易)
  • 设置一个 BroadcastReceiver 来捕捉时钟的滴答声,这样你就知道时间什么时候改变了。

所以,一些代码有点像这样:

class MyCleverThing extends Service (say) {

    // Your stuff here

    private static IntentFilter timeChangeIntentFilter;
    static {
        timeChangeIntentFilter = new IntentFilter();
        timeChangeIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
        timeChangeIntentFilter.addAction(Intent.ACTION_TIME_CHANGED);
    }

    // Somewhere in onCreate or equivalent to set up the receiver
    registerReceiver(timeChangedReceiver, timeChangeIntentFilter);

    // The actual receiver
    private final BroadcastReceiver timeChangedReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if (action.equals(Intent.ACTION_TIME_CHANGED) ||
            action.equals(Intent.ACTION_TIMEZONE_CHANGED))
        {
            updateWidgets();  // Your code to rebuild the remoteViews or whatever
        }
    }
};
于 2013-03-11T21:41:16.160 回答
0

每次更新通知时,请执行以下简单操作(24 小时制)...

public void updateNotifTime(RemoteViews customNotifView){
    Date currentTime = new Date();
    int mins = currentTime.getMinutes();
    String minString = "";
    if(mins<10){
       minString = "0";
    }
    minString += mins;
    customNotifView.setTextViewText(R.id.time, currentTime.getHours()+":"+minString);
}
于 2013-03-12T15:19:26.610 回答