onBoot完成用户首选项

时间:2010-08-12 06:40:37

标签: android permissions

有没有办法通过应用程序,我可以订阅和取消订阅“ACTION_BOOT_COMPLETED”消息?

如果是这样,我该怎么做?

任何类型的指针都会对我有帮助。

提前致谢,
问候,
维奈

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

执行此操作的最佳方法是使用PackageManager.setComponentEnabledSetting():http://developer.android.com/reference/android/content/pm/PackageManager.html#setComponentEnabledSetting(android.content.ComponentName,int,int)

因此,通过在清单中设置android:enabled,可以简单地决定是否要默认启用接收。然后使用此API在运行时根据需要显式启用或禁用该组件。如果禁用该组件,则在启动时它将不可用,因此不会接收广播。

答案 2 :(得分:0)

事实上,有:

您的启动接收器:

public class BootstrapReceiver extends BroadcastReceiver {
   @Override
   public void onReceive(Context cntxt, Intent intent) {
      String action = intent.getAction();

      if(Intent.ACTION_BOOT_COMPLETED.equals(action)) {
          // do your thing
      }     
   }
}

添加接收者和接收引导事件的权限:

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

  <receiver android:name=".BootstrapReceiver" android:enabled="true">
     <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
     </intent-filter>
  </receiver>

通过应用程序(如果你想以编程方式添加/删除启动接收器而不是通过AndroidManifest.xml,请使用此项。但请记住,您仍需要在AndroidManifest.xml中声明启动权限)

  Context ctx = getContext();
  BootstrapReceiver booter = new BootstrapReceiver();
  IntentFilter filter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
  ctx.registerReceiver(booter, filter);

取消注册:

  ctx.unregisterReceiver(booter);