Question

J'ai exploré récemment les API d'administration de l'appareil, et je l'ai trouvé que ni mon code, ni l'exemple de code sur le site Android en développement ont été en mesure de permettre à l'administration de l'appareil.

L'erreur que je reçois le lancement est:

12-28 17:24:49.596: WARN/PackageManager(60): Not granting permission android.permission.BIND_DEVICE_ADMIN to package com.example (protectionLevel=2 flags=0x8446)

et puis quand je tente de permettre à l'administrateur:

12-28 17:27:22.426: WARN/DeviceAdminAdd(396): Unable to retrieve device policy ComponentInfo{com.example/com.example.Receiver}
org.xmlpull.v1.XmlPullParserException: No android.app.device_admin meta-data

Je mets toutes les autorisations exactement les mêmes que par les exigences du manifeste:

    <activity android:name=".MyActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name=".Receiver"
              android:label="device_admin"
              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>

et les politiques de l'appareil sont également définies exactement selon les exigences énoncées par les API.

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <limit-password />
        <watch-login />
        <reset-password />
        <force-lock />
        <wipe-data />
    </uses-policies>

Ai-je fait une erreur à obtenir l'autorisation ou est l'administration de l'appareil non disponible sans signature de code supplémentaire?     

Était-ce utile?

La solution

Vous avez mal au format XML que vous avez fermé votre balise de <receiver /> avant la spécification de l'élément méta-données. Voici ce qu'il devrait être:

<receiver android:name=".Receiver"
          android:label="device_admin"
          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>

D'autres pensées qui viennent à l'esprit:

  • Dans mon projet, le fichier device_admin.xml est dans le répertoire \ res répertoire xml. Peut-être assurez-vous que votre fichier XML est-il?

  • Avez-vous besoin @string sur Android: label pour le récepteur? par exemple.

android:label="@string/device_admin"

Autres conseils

en fonction du http://developer.android.com/guide/publishing /app-signing.html les signes de débogage juste pour la compilation + fins de course. Ne serait-il pas encore en mesure d'exécuter dans le débogueur?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top