2013-07-01 32 views

答えて

13

パッケージマネージャを使用することにより、有効成分のための無効コンポーネントとPackageManager.COMPONENT_ENABLED_STATE_ENABLEDためPackageManager.COMPONENT_ENABLED_STATE_DISABLED 2つのフラグがありますmenifestファイル で宣言されたコンポーネントを有効または無効にすることができます。

PackageManager pm = getApplicationContext().getPackageManager(); 
    ComponentName componentName = new ComponentName("com.app", 
     ".broadcast_receivers.OnNetworkChangedReceiver"); 
     pm.setComponentEnabledSetting(componentName, 
     PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
     PackageManager.DONT_KILL_APP); 

アンドロイドマニフェスト:

<receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver" 
      android:enabled="true"> 
     <intent-filter> 
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
     </intent-filter> 
</receiver> 
+1

同じコードを両方可能にし、コンポーネントを無効にし、または微妙な違いがありますか? – scibor

+0

あなたは答えました – scibor

+0

無効なコンポーネントPackageManager.COMPONENT_ENABLED_STATE_DISABLED および有効なコンポーネントPackageManager.COMPONENT_ENABLED_STATE_ENABLED –

0

にするために、より一般的な実装Pawanアプローチを取る:

public static void setComponentState(Context context, String packageName , String componentClassName, boolean enabled) 
{ 
    PackageManager pm = context.getApplicationContext().getPackageManager(); 
    ComponentName componentName = new ComponentName(packageName, componentClassName); 
    int state = enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; 
    pm.setComponentEnabledSetting(componentName, 
      state, 
      PackageManager.DONT_KILL_APP); 

} 
関連する問題