2013-07-01 27 views
5

câu hỏi ban đầu của tôi là một cái gì đó về cơ bản dọc theo dòng này: Clearing and setting the default home applicationLàm cách nào để bật và tắt một thành phần?

câu hỏi đó đã được trả lời thỏa đáng, tuy nhiên, điều tôi đang gặp khó khăn trong sự hiểu biết câu trả lời là làm thế nào để bạn kích hoạt và sau đó vô hiệu hóa một phần từ tệp kê khai trong mã java?

Trả lời

13

Bằng cách sử dụng trình quản lý gói, bạn có thể bật hoặc tắt thành phần được khai báo trong tệp kê khai Có hai cờ PackageManager.COMPONENT_ENABLED_STATE_DISABLED cho thành phần vô hiệu hóa và PackageManager.COMPONENT_ENABLED_STATE_ENABLED cho thành phần bật.

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

Cùng mã cả hai cho phép và vô hiệu hóa các thành phần hoặc là có một sự khác biệt tinh tế? – scibor

+0

Nevermind, bạn đã trả lời, nhờ – scibor

+0

cho thành phần vô hiệu hóa PackageManager.COMPONENT_ENABLED_STATE_DISABLED và cho phép thành phần PackageManager.COMPONENT_ENABLED_STATE_ENABLED –

0

dùng phương pháp Pawan để thực hiện chung chung hơn:

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

} 
Các vấn đề liên quan