2011-10-05 206 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文件