android:使用 Intent.ACTION_BOOT_COMPLETED 或...?

android: use Intent.ACTION_BOOT_COMPLETED or ...?

在 AndroidManifest 文件中,我想在用户重新启动设备时捕获 BOOT_COMPLETED 事件。我正在添加此权限:

"uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"

我在 Whosebug 上看到两个 "intent-filters" 被其他人使用:

"Intent.ACTION_BOOT_COMPLETED" 和

"android.intent.action.BOOT_COMPLETED"

这里的首选操作字符串是什么?请指教和解释。

Intent.ACTION_BOOT_COMPLETED == android.intent.action.BOOT_COMPLETED

它们是相同的,因为如果您查看 Intent.ACTION_BOOT_COMPLETED 的值,您会发现它是 android.intent.action.BOOT_COMPLETED

通常在清单中,您将使用 android.intent.action.BOOT_COMPLETED,因为 Intent.ACTION_BOOT_COMPLETED 是 Java 代码而不是 xml。

但是在您的代码中,您可以使用 Intent.ACTION_BOOT_COMPLETED 作为替代方法,因为它更容易记住。

这是一个完整的解决方案:

在清单中设置权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

你需要一个接收器来 运行 当你的系统重新启动时,像这样:

public class StartMyActivityAtBootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
           // everything here executes after system restart
        }
    }
}

在您的清单中包含此接收器,如下所示:

<receiver
    android:name=".service.StartMyActivityAtBootReceiver"
    android:label="StartMyServiceAtBootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>