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

时间:2015-08-03 12:50:30

标签: android date android-intent broadcastreceiver android-broadcast

我制作了这个广播接收器

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

在清单

中注册
     <receiver
        android:name=".DateReceiver"
        android:enabled="true"
        android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.DATE_CHANGED" />
        </intent-filter>
     </receiver>

当设备开启但是如果我将其关闭并等待午夜通过时,它会起作用,那么我在重新启动时没有任何意图。我应该怎么做到?

1 个答案:

答案 0 :(得分:4)

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

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

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