2010-12-28 13 views
3

Ich habe vor kurzem die Geräteverwaltung APIs erkunden, und ich habe festgestellt, dass weder mein Code, noch der Beispielcode auf der Android-Website konnte die Geräteverwaltung aktivieren.Android "Nichterlaubnis Erlaubnis" Fehler

Der Fehler, den ich auf Start bekommen ist:

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) 

und dies dann, wenn ich versuche, den Administrator zu aktivieren:

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 

ich die Berechtigungen alle exakt nach den Anforderungen die gleiche Set für Das Manifest:

<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> 

und die Geräterichtlinien werden auch genau wie pro t festgelegt Die Anforderungen werden von den APIs angegeben.

Habe ich einen Fehler bei der Erlangung der Berechtigung gemacht oder ist die Geräteverwaltung ohne zusätzliche Codesignatur nicht verfügbar?

+0

Ziemlich sicher ist dies ohne Firmware Unterzeichnung nicht verfügbar. – Falmarri

Antwort

1

Sie haben ein schlecht formatiertes XML, da Sie vor der Angabe des Metadatenelements Ihr <receiver />-Tag geschlossen haben. Hier ist, was es sein sollte:

<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> 

Andere Gedanken in den Sinn kam:

  • In meinem Projekt die device_admin.xml-Datei in dem ist \ res \ xml-Verzeichnis. Vielleicht stellen Sie sicher, dass Ihre XML-Datei da ist?

  • Benötigen Sie @string auf dem Android: Label für den Empfänger? z.B.

android:label="@string/device_admin" 
  • Ich bin darüber nicht sicher, aber tun Sie müssen auch zu einem uses-permission XML-Element zu Ihrem Manifest.xml hinzufügen?