2012-10-28 7 views
10

Tôi đang cố thêm nút vào ứng dụng của mình để xóa nó khỏi Quản trị viên thiết bị và đang sử dụng mã bên dưới nhưng ứng dụng của tôi chỉ gặp sự cố.Android: Đã xóa chương trình ứng dụng của tôi khỏi Quản trị viên thiết bị?

Code: -

Vào Nút Bấm: -

{ 
    ComponentName devAdminReceiver = new ComponentName(this, DemoDeviceAdminReceiver.class); 
    DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 
    dpm.removeActiveAdmin(devAdminReceiver); 
} 

Trong đoạn mã trên, DemoDeviceAdminReceiver là một lớp mà kéo dài DeviceAdminReceiver.

Lỗi log: -

10-28 15:26:09.295: E/AndroidRuntime(26101): FATAL EXCEPTION: main 
10-28 15:26:09.295: E/AndroidRuntime(26101): java.lang.IllegalArgumentException: Unknown admin: ComponentInfo{com.dragonnis.intellicover/com.dragonnis.intellicover.DemoDeviceAdminReceiver} 
10-28 15:26:09.295: E/AndroidRuntime(26101): at android.os.Parcel.readException(Parcel.java:1331) 
10-28 15:26:09.295: E/AndroidRuntime(26101): at android.os.Parcel.readException(Parcel.java:1281) 
10-28 15:26:09.295: E/AndroidRuntime(26101): at android.app.admin.IDevicePolicyManager$Stub$Proxy.removeActiveAdmin(IDevicePolicyManager.java:2940) 
10-28 15:26:09.295: E/AndroidRuntime(26101): at android.app.admin.DevicePolicyManager.removeActiveAdmin(DevicePolicyManager.java:183) 

Trả lời

14

Đó là khi bạn làm:

DevicePolicyManager mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
mDPM.removeActiveAdmin(mDeviceAdminReceiver); 

Nhưng bạn cần phải thêm các bộ lọc này cho người nhận trong AndroidManifest.xml:

<intent-filter> 
     <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
     <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" /> 
    </intent-filter> 


@Override 
public CharSequence onDisableRequested(Context context, Intent intent) { 
    return "Admin rights are beeing requested to be disabled for the app called: '" + context.getString(R.string.app_name) + "'."; 
} 
+0

Hãy để tôi biết nếu nó giúp. – ViliusK

+0

Cảm ơn bạn đã phản hồi nhanh. Các bộ lọc ý định đã có trong tệp AndroidManifest.xml. Quản trị viên thiết bị chỉ được bật nhưng cố gắng xóa vẫn gây ra sự cố. –

+0

Ồ, đã sửa. Vấn đề là với lớp DeviceAdminReceiver. Tôi đã sử dụng một lớp riêng biệt để cho phép quản trị thiết bị nhưng khi tôi đã cố gắng để loại bỏ nó tôi đã sử dụng một DeviceAdminReceiver khác mà thậm chí không được kích hoạt như quản trị thiết bị. Tôi ngớ ngẩn quá. Cảm ơn bạn đã giúp đỡ. –