Androidでブロードキャストレシーバーやサービスを一時的に無効にするには?

Androidでブロードキャストレシーバーやサービスを一時的に無効にするにはどうしたらいいだろう。

PackageManagerにsetComponentEnabledSetting()というメソッドがあるので、例えばこんな風にできる。

/**
 * 各種コンポーネント(ブロードキャストレシーバーやサービス)を無効・有効にする
 * 
 * @param cxt コンテキスト
 * @param cls 無効(有効)にしたいクラス
 * @param disabled 無効にするかどうか
 */
public static void disableComponent(Context cxt, Class<?> cls, boolean disabled) {
  int newState = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
  if (!disabled) {
    newState = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
  }
  ComponentName compName = new ComponentName(cxt, cls);
  PackageManager pm = cxt.getPackageManager();
  pm.setComponentEnabledSetting(compName, newState, PackageManager.DONT_KILL_APP);
}

コメント

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?