2011-10-05 125 views
1

我试图让设备策略管理器正常工作,但当我尝试启用设备策略管理器时卡住了。 Google搜索有关该错误很多,已经越来越侵略性:设备策略管理员无法检索设备策略

10-05 10:39:07.147: WARN/DeviceAdminAdd(144): Unable to retrieve device policy ComponentInfo{test.devadmin/test.devadmin.DeviceAdmin$MyDeviceAdminReceiver} 
    10-05 10:39:07.147: WARN/DeviceAdminAdd(144): android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{test.devadmin/test.devadmin.DeviceAdmin$MyDeviceAdminReceiver} 

清单:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".DeviceAdmin" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity>  
<activity android:name=".app.DeviceAdmin$Controller" 
    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="MyDeviceAdminReceiver" 
     android:label="@string/app_label" 
     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> 
</application> 
</manifest> 

device_admin.xml

<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> 
</device-admin> 

实现方法

public void enable() { 
    if (!mDPM.isAdminActive(mDeviceAdmin)) { 
     Intent intent = new Intent(
       DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
     intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, 
       mDeviceAdmin); 
     intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, 
       "Additional text explaining why this needs to be added."); 
     startActivityForResult(intent, REQUEST_ENABLE); 
    } else { 
     mDPM.lockNow(); 
    } 

Reciever类是basicly与基金一样这里D:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html

http://rootfs.wordpress.com/2010/09/09/android-make-your-application-a-device-administrator/

任何帮助或建议,将不胜感激!

回答

3

检查您的收货人姓名<receiver android:name="MyDeviceAdminReceiver"

我想你忘记了接收器名称前添加.

<receiver android:name=".MyDeviceAdminReceiver" 
+0

接收器名称应该是接收器android:name =“。MyDeviceAdminReceiver” – SudP

+0

@ user980188:Sudhir28是正确的。你试过了吗? –

+0

谢谢你们。我看到很多其他使用 Ton

3

我认为,如果你重新检查你的DeviceAdmin的java文件,你想扩展接收器的名字是不同于你在android manifest.xml文件中指定的那个。只是一个疯狂的猜测,因为你还没有显示你的DeviveAdmin java文件