首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备策略管理器无法检索设备策略

设备策略管理器无法检索设备策略
EN

Stack Overflow用户
提问于 2011-10-05 19:09:25
回答 3查看 4.2K关注 0票数 1

我正在尝试让设备策略管理器工作,但我在尝试启用它时卡住了。谷歌了很多,并且已经对这个错误变得咄咄逼人了:

代码语言:javascript
复制
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}

清单:

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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>

启用方法

代码语言:javascript
复制
    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类与这里的基本相同: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/

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

EN

回答 3

Stack Overflow用户

发布于 2011-11-03 14:27:21

检查您的接收者姓名<receiver android:name="MyDeviceAdminReceiver"

我想你忘了在接收者名字前加上.

代码语言:javascript
复制
<receiver android:name=".MyDeviceAdminReceiver"
票数 3
EN

Stack Overflow用户

发布于 2011-12-16 00:46:33

我认为如果你重新检查你的android java文件,你尝试扩展的接收方名称与你在DeviceAdmin manifest.xml文件中指定的名称不同。由于您还没有展示您的DeviveAdmin java文件,所以这只是一个胡乱猜测

票数 3
EN

Stack Overflow用户

发布于 2019-06-22 01:09:23

我在过去的一天里一直在努力解决这个问题。只是遇到了我自己的问题。我的问题是在我的componentName中,我正在做我的构造函数,比如:

代码语言:javascript
复制
val adminName = ComponentName(this, ::DeviceAdminReceiver.javaClass)

最后注意到我收到了一个关于公共构造函数PackageManager.NameNotFoundException的警告...快速转换到

代码语言:javascript
复制
val adminName = ComponentName("com.project.myApp", "com.project.myApp.DeviceAdminReceiver")

一切都很快就能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7660367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档