2013-09-23 8 views
10

Sto utilizzando un Nexus 7 aggiornato alla 4.3. Possiedo un'applicazione che richiede diritti di amministratore dispositivo per bloccare/cancellare il dispositivo. Ho assegnato l'amministratore del dispositivo alla mia applicazione sul profilo proprietario. Quindi, quando passo a un altro profilo utente, posso vedere la mia applicazione nell'elenco delle app di amministrazione del dispositivo. Tuttavia quando do un comando Lock su questo profilo utente non proprietario, ottengo l'eccezione come "java.lang.SecurityException: Nessun amministratore attivo di proprietà di uid XXXXXX".Errore Android 4.3 DeviceAdmin per profilo non proprietario

Anche il metodo DevicePolicyManager isActiveAdmin() restituisce true su questo profilo, ma non riesce a intervenire e arresta l'applicazione.

Suppongo che una volta che l'amministratore del dispositivo sia impostato per il profilo utente proprietario, viene applicato automaticamente a tutti gli altri profili utente. Qualche idea, allora, perché sta succedendo? Inoltre, esiste una documentazione che indica la cura della mia applicazione per gestire più profili utente nel caso in cui la mia app richieda i diritti di amministratore

+1

"Presumo che, una volta impostato l'amministratore del dispositivo per il profilo utente proprietario, venga applicato automaticamente a tutti gli altri profili utente" - non lo presumo certo. Suppongo che altri profili, in particolare quelli con restrizioni, non abbiano la capacità di lavorare con gli amministratori dei dispositivi. Detto questo, non sono a conoscenza di alcuna documentazione in questo spazio. – CommonsWare

+0

quello che ho detto era basato sull'osservazione sul mio Nexus 7. Controllerò l'attivazione di DeviceAdmin su altri profili e aggiornerò qui. –

+0

Provare a disinstallare l'app e reinstallare l'apk su quell'account utente, quindi aggiungerlo come amministratore del dispositivo e avviare l'app. – hichris123

risposta

8

Hai impostato in device_admin_sample.xml quali criteri di amministrazione sono conformi alla tua app comportamento previsto?

Impostare le paramenters admin come

android:label="@string/enterprise_device_admin" 
     android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    android:resource="@xml/enterprise_device_admin" /> 

Ecco un contenuto tipico per il vostro file di device_admin_sample.xml:

<activity android:name=".app.DeviceAdminSample" 
     android:label="@string/activity_sample_device_admin"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.SAMPLE_CODE" /> 
    </intent-filter> 
</activity> 
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" 
    android:label="@string/sample_device_admin" 
    android:description="@string/sample_device_admin_description" 
    android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    <meta-data android:name="android.app.device_admin" 
     android:resource="@xml/device_admin_sample" /> 
    <intent-filter> 
     <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
    </intent-filter> 
</receiver> 

Ulteriore lettura con le istruzioni passo passo che è anche la pena di verificare:

Problemi correlati