2010-12-28 3 views
3

Я недавно изучал API-интерфейсы администрирования устройств, и я обнаружил, что ни мой код, ни образец кода на веб-сайте разработки Android не смогли включить администрирование устройства.Ошибка Android «Не предоставление разрешения»

Я получаю ошибку о запуске является:

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) 

и тогда это, когда я пытаюсь включить администратора:

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 

Я установить все права точно так же, как в соответствии с требованиями к манифест:

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

и правила устройства также установлены точно в соответствии с требования, указанные 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> 

Я сделал ошибку в получении разрешения или администрирование устройства не доступно без дополнительной подписи кода?

+0

Довольно уверен, что это не доступно без подписи микропрограммы. – Falmarri

ответ

1

У вас плохо отформатированный XML, так как вы закрыли свой тег <receiver /> до указания элемента метаданных. Вот что должно быть:

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

Другие мысли, которые пришли на ум:

  • В моем проекте файл device_admin.xml находится в \ Рез \ XML каталог. Может быть, убедитесь, что ваш XML-файл есть?

  • Вам нужно @string на андроиде: ярлык для приемника? например

android:label="@string/device_admin" 
  • Я не уверен в этом, но вы также должны добавить uses-permission XML элемент к вашему Manifest.xml тоже?

Смежные вопросы