2012-10-28 8 views
10

Sto provando ad aggiungere un pulsante alla mia app per rimuoverlo da Device Administrator e sto usando il codice qui sotto, ma la mia app si blocca.Android: rimuovi la mia app da Device Administrator a livello di programmazione?

Codice: -

On Button Click: -

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

Nel codice precedente, DemoDeviceAdminReceiver è una classe che estende DeviceAdminReceiver. log

Errore: -

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) 

risposta

14

E 'come si fa:

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

Ma è necessario aggiungere questi filtri al ricevitore in 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

Lasciatemi sapere se aiuta – ViliusK

+0

Grazie per la risposta veloce. I filtri di intent sono già presenti nel file AndroidManifest.xml. L'amministratore del dispositivo è abilitato, ma provare a rimuovere causa ancora l'arresto anomalo. –

+0

Oh, risolto. Il problema era con la classe DeviceAdminReceiver. Stavo usando una classe separata per abilitare l'amministratore del dispositivo, ma quando ho provato a rimuoverlo stavo usando un diverso DeviceAdminReceiver che non era nemmeno abilitato come amministratore del dispositivo. Silly me. Grazie per l'aiuto. –

Problemi correlati