Android:是否在设备重启时触发 android.intent.action.DATE_CHANGED?

use*_*180 1 android date broadcastreceiver android-intent android-broadcast

我做了这个广播接收器

public class DateReceiver extends BroadcastReceiver {
   @Override
   public void onReceive(Context context, Intent intent) {
     Log.i("DATE RECEIVER", "OK");
   }
}
Run Code Online (Sandbox Code Playgroud)

在清单中注册

     <receiver
        android:name=".DateReceiver"
        android:enabled="true"
        android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.DATE_CHANGED" />
        </intent-filter>
     </receiver>
Run Code Online (Sandbox Code Playgroud)

它在设备开启时工作,但如果我将其关闭并等待午夜过去,那么我就没有任何重新启动的意图。我应该如何得到它?

Mar*_*ski 5

你不会收到这个广播,因为日期没有改变(除非启动后有时间更新)。它是不同的,但并没有改变证明这种广播的方式。这可能会令人困惑,但实际上,设备启动时的时间戳是什么并不重要。当设备启动时,它不知道是因为重启还是关闭了 5 周。如果时间被人为更改,即由于网络时间同步、通过首选项手动更改时间、时区更改,将发送广播。正常滴答不计。初始时间戳无关紧要。

如果你需要知道开机日期,你应该听BOOT_COMPLETED.

您还需要将其删除android:exported="false"或设置为true,否则无法访问。