2012-10-28 16 views
10

Próbuję dodać przycisk do mojej aplikacji, aby usunąć go z Administratora urządzenia i używam poniższego kodu, ale moja aplikacja po prostu zawiesza się.Android: Programowo usunąć moją aplikację od administratora urządzenia?

Code: -

w przycisk kliknij: -

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

W powyższym kodzie, DemoDeviceAdminReceiver jest klasa, która rozszerza DeviceAdminReceiver. log

Błąd: -

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) 

Odpowiedz

14

To jak to zrobić:

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

Ale trzeba dodać te filtry do odbiornika w 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

Niech mnie wiem, czy to pomaga. – ViliusK

+0

Dzięki za szybką reakcję. Filtry zamiaru są już obecne w pliku AndroidManifest.xml. Administrator urządzenia jest włączony, ale próba usunięcia nadal powoduje awarię. –

+0

Och, naprawiłem to. Problem dotyczył klasy DeviceAdminReceiver. Używałem osobnej klasy, aby włączyć administratora urządzenia, ale gdy próbowałem go usunąć, korzystałem z innego DeviceAdminReceiver, który nie był nawet włączony jako administrator urządzenia. Głupi ja. Dzięki za pomoc. –