2013-07-01 17 views
5

Benim ilk soru temelde bu çizgisinde bir şeydi: Bu soru benim memnuniyeti için cevap verilmiştir Clearing and setting the default home applicationBir bileşen nasıl etkinleştirilir ve devre dışı bırakılır?

, ancak, yanıtında anlamakta güçlük yaşıyorum şey etkinleştirmek ve daha sonra bir bileşeni devre dışı nasıl olduğunu java kodundaki manifestodan mı? paket etkinleştirebilir müdürü veya menifest dosyasında bildirilen devre dışı bileşeni kullanarak

cevap

13

devre dışı bileşen ve PackageManager.COMPONENT_ENABLED_STATE_ENABLED bileşenini etkinleştirme için için PackageManager.COMPONENT_ENABLED_STATE_DISABLED iki bayrak vardır.

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); 

Android manifest:

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

aynı kodu hem sağlayan ve bileşen devre dışı bırakır ya da ince bir fark var mıdır? – scibor

+0

Nevermind, bunu yanıtladınız, – scibor

+0

aksamını devre dışı bırakmak için PackageManager.COMPONENT_ENABLED_STATE_DISABLED ve bileşeni etkinleştirmek için PackageManager.COMPONENT_ENABLED_STATE_ENABLED –

0

daha genel bir uygulama Pawan yaklaşımla:

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); 

} 
İlgili konular