2013-09-23 13 views
10

Ich benutze ein Nexus 7 auf 4.3 aktualisiert. Ich habe eine Anwendung, die Device Admin-Rechte zum Sperren/Löschen von Geräten benötigt. Ich habe Device-Admin-Recht für meine Anwendung auf Owner Profile gegeben. Wenn ich also zu einem anderen Benutzerprofil wechsle, kann ich meine Anwendung in der Liste der Geräteadministrator-Apps sehen. Allerdings, wenn ich einen Lock-Befehl auf dieses Benutzerprofil nicht Besitzer geben, bekomme ich die Ausnahme als "java.lang.SecurityException: Kein aktiver Administrator von UID XXXXXX".Android 4.3 DeviceAdmin Fehler für nicht Besitzer Profil

DevicePolicyManager Die Methode isActiveAdmin() gibt in diesem Profil auch true zurück, schlägt jedoch fehl und führt zum Absturz der Anwendung.

Ich gehe davon aus, dass, sobald Device Admin für Eigentümer Benutzerprofil festgelegt ist, es automatisch auf alle anderen Benutzerprofile angewendet wird.Eine Ahnung, warum ist das passiert? Gibt es auch eine Dokumentation, die darauf hinweist, welche Sorgfalt meine Anwendung braucht, um mehrere Benutzerprofile verarbeiten zu können, falls meine App Geräteadministratorrechte benötigt

+1

"Ich gehe davon aus, dass, sobald Geräte-Admin für Besitzer Benutzerprofil festgelegt ist, es automatisch auf alle anderen Benutzerprofile angewendet wird" - ich würde das sicherlich nicht annehmen. Ich würde annehmen, dass andere Profile, insbesondere eingeschränkte, keine Möglichkeit haben, mit Geräteadministratoren zu arbeiten. Davon abgesehen ist mir keine Dokumentation in diesem Bereich bekannt. – CommonsWare

+0

was ich sagte, basierte auf Beobachtung auf meinem Nexus 7. Ich überprüfe die Erzwingung der Aktivierung von DeviceAdmin in anderen Profilen und aktualisiere sie hier. –

+0

Versuchen Sie, die App zu deinstallieren und die APK für dieses Benutzerkonto erneut zu installieren. Fügen Sie sie dann als Geräteadministrator hinzu und starten Sie die App. – hichris123

Antwort

8

Haben Sie in device_admin_sample.xml festgelegt, welche Administratorrichtlinien mit Ihrer App übereinstimmen? erwartetes Verhalten?

Stellen Sie die Admin-paramenters als

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

Hier ist eine typische Inhalte für Ihre Datei 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> 

Weitere mit Schritt für Schritt Anleitungen zu lesen, die auch wert ist: