2012-05-01 38 views
5

Tôi muốn xóa ứng dụng của mình khỏi danh sách ứng dụng và danh sách ứng dụng gần đây. Vì vậy, tôi đã cố gắng vô hiệu hóa hoạt động chính/trình khởi chạy của mình bằng mã sau:cài đặt lại android không thành công sau khi tắt hoạt động của trình khởi chạy

ComponentName componentToDisable = new ComponentName(context, MainActivity.class); 
context.getPackageManager().setComponentEnabledSetting(componentToDisable, 
      PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

Thao tác này thực hiện công việc. Nhưng bây giờ tôi cố gắng cài đặt lại ứng dụng và nó không nói "lớp MainActivity hoạt động không tồn tại". Nếu tôi gỡ cài đặt ứng dụng, quá trình cài đặt sẽ hoạt động trở lại. Làm thế nào tôi có thể xử lý vấn đề này? Cảm ơn bạn rất nhiều vì đã dành thời gian và giúp đỡ

Trả lời

5

Tôi thấy rằng tôi phải kích hoạt hoạt động trước khi cài đặt lại. Điều này có thể được thực hiện bằng cách có bộ thu phát sóng nghe các sự kiện package_add/remove và trong onReceive làm cho hoạt động được bật lại.

public void onReceive(Context context, Intent intent) { 
    Log.i("Receiver","got event"); 
    ComponentName componentToDisable = new ComponentName(context,BlockableComponentActivity.class); 
    context.getPackageManager().setComponentEnabledSetting(componentToDisable, 
      PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
} 

trích Manifest cho người nhận:

<receiver android:name="PackageChangeReceiver"> 
<intent-filter> 
    <action android:name="android.intent.action.PACKAGE_ADDED"/> 
    <action android:name="android.intent.action.PACKAGE_REPLACED"/> 
    <action android:name="android.intent.action.PACKAGE_REMOVED"/> 
    <data android:scheme="package"/> 
</intent-filter> 

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