2012-10-28 96 views
10

我想添加一個按鈕到我的應用程序將其從設備管理器中刪除它,並使用下面的代碼,但我的應用程序只是崩潰。Android:以編程方式從設備管理員刪除我的應用程序?

代碼: -

在按鈕點擊: -

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

在上面的代碼,DemoDeviceAdminReceiver是擴展DeviceAdminReceiver類。

錯誤日誌: -

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) 

回答

14

這是爲你做的:

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

但是,你需要這些過濾器在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

讓我知道它是否有幫助。 – ViliusK

+0

感謝您的快速響應。意圖過濾器已經存在於AndroidManifest.xml文件中。設備管理員已啓用,但嘗試刪除仍然導致崩潰。 –

+0

哦,修好了。問題出在DeviceAdminReceiver類。我正在使用一個單獨的類來啓用設備管理員,但是當我嘗試刪除它時,我正在使用不同的DeviceAdminReceiver,它甚至沒有作爲設備管理員啓用。傻我。謝謝你的幫助。 –

相關問題