2017-07-14 3 views
1

J'ai créé une application kiosque et j'essaie de configurer mon appareil en tant qu'administrateur. Chaque fois que je vérifie si je suis administrateur actif, il retourne faux retourL'administration de l'appareil ne fonctionne pas

private void provisionOwner() { 
    DevicePolicyManager manager = 
      (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 
    ComponentName componentName = BasicDeviceAdminReceiver.getComponentName(this); 

    if(!manager.isAdminActive(componentName)) { 
     Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
     intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); 
     startActivityForResult(intent, 0); 
     return; 
    } 

    if (manager.isDeviceOwnerApp(getPackageName())) 
     manager.setLockTaskPackages(componentName, new String [] {getPackageName()}); 
} 

J'ai suivi les instructions de faire script de ligne de commande avant de vérifier si l'appareil est admin et je reçois une erreur.

adb shell dpm set-device-owner com.testapp/.DeviceAdminReceiver 

L'erreur que je reviens est

enter image description here

Pour AndroidManifest.xml j'ajouter la permission Bluetooth

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

Pour AndroidManifest.xml j'enregistrer DeviceAdminReceiver

<receiver 
     android:name="<my package>.DeviceAdminReceiver" 
     android:label="@string/app_name" 
     android:permission="android.permission.BIND_DEVICE_ADMIN"> 
     <meta-data 
      android:name="android.app.device_admin" 
      android:resource="@xml/device_admin" /> 

     <intent-filter> 
      <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
     </intent-filter> 
    </receiver> 

Mon device_admin.xml est la suivante:

<?xml version="1.0" encoding="utf-8"?> 
<device-admin> 
    <uses-policies> 
     <wipe-data/> 
     <force-lock/> 
     <disable-camera/> 
     <disable-keyguard-features/> 
    </uses-policies> 
</device-admin> 

Est-il nécessaire, pour mettre en place le mode Kiosk que je fais mon appareil admin? Et si oui, pourquoi est-ce que je reçois cette erreur?

Répondre

1

Il existe une différence entre être propriétaire d'un périphérique et administrateur de périphérique. Vous en définissez un (administrateur d'appareil) et en recherchez un autre (propriétaire de l'appareil).

Un propriétaire de périphérique est généralement défini lors du provisionnement de périphérique au début de l'Assistant Google. Mais il peut également être défini après avoir passé par l'Assistant Google en utilisant la commande dpm que vous avez mentionnée. La commande dpm ne peut définir un propriétaire de périphérique que s'il n'y a aucun compte sur le périphérique. Le propriétaire de l'appareil est limité lorsqu'il peut être défini en raison du contrôle dont il dispose. Un périphérique appartenant à l'entreprise sera généralement approvisionné avec un MDM/EMM en tant que propriétaire de l'appareil.

Un administrateur de périphérique est beaucoup plus limité dans le contrôle qu'il a d'un périphérique. Mais il peut être ajouté à tout moment. Chaque version d'Android limite de plus en plus ce qu'un administrateur de périphérique peut faire depuis qu'Android Enterprise (android for work [AfW]) a été publié dans Lollipop.

La solution de kiosque la plus complète permet de configurer un appareil avec une application en tant que propriétaire de l'appareil. D'autres solutions que j'ai vues utilisent un lanceur personnalisé pour verrouiller l'appareil en ajoutant des applications, mais il y a beaucoup de failles de sécurité dans cette implémentation.

Regardez dans l'application TestDPC. Google fournit le code source et il aura la plupart, sinon tout ce dont vous avez besoin. Jouez avec le contrôle qu'il vous donne en tant que propriétaire de l'appareil.

https://developers.google.com/android/work/build-dpc

https://github.com/googlesamples/android-testdpc

Je suppose que votre application n'est pas configuré correctement en tant que propriétaire de l'appareil, ni dispositif d'administration. Spécifiquement, vérifiez que vous avez un périphérique DeviceAdminReceiver déclaré avec le android:permission="android.permission.BIND_DEVICE_ADMIN" dans le manifeste avec un fichier de ressources xml contenant les stratégies qu'il peut utiliser. Plus de votre code source permettrait de déboguer les problèmes que vous voyez.

+0

Merci pour votre réponse. C'est plus clair. J'ai également ajouté les mises à jour que vous avez mentionnées à ma question – portfoliobuilder