找不到用于处理Intent的活动{act = android.app.action.ADD_DEVICE_ADMIN(有其他功能)}

时间:2019-03-28 17:24:52

标签: android device-admin android-multiple-users

我正在尝试启用设备管理,因此可以在Android 9中创建辅助用户。

首先是使用ACTION_ADD_DEVICE_ADMIN发送意图,如下所示:

                    // Launch the activity to have the user enable our admin.
                Intent deviceAdminIntent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                deviceAdminIntent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminRen);
                deviceAdminIntent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                        getResources().getString(R.string.device_admin_activation_message));

                startActivityForResult(deviceAdminIntent, REQ_ENABLE_DEVICE_ADMIN);

必须在manifest.xml中使用适当的意图过滤器预先定义deviceAdminReceiver:

    <activity android:name=".AuthSessionActivity" />
    <activity android:name=".CreateRenUser"/>
    <receiver android:name=".DeviceAdminRen"
        android:label="@string/renault_device_admin"
        android:description="@string/ren_device_admin_description"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
        <meta-data android:name="android.app.device_admin"
            android:resource="@xml/device_admin_ren" />
        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
        </intent-filter>
    </receiver>

还定义了deviceAdminReceiver类:

public class DeviceAdminRen extends DeviceAdminReceiver {

.........

但是然后我得到了错误:

  

03-28 16:44:54.573 7173 7173 E AndroidRuntime:java.lang.RuntimeException:无法恢复活动{com.sensory.trulysecureexample / com.sensory.trulysecure.custom.CreateRenaultUser}:android.content.ActivityNotFoundException:找不到用于处理Intent的活动{act = android.app.action.ADD_DEVICE_ADMIN(有其他功能)}   03-28 16:44:54.573 7173 7173 E AndroidRuntime:在android.app.ActivityThread.performResumeActivity(ActivityThread.java:3822)   03-28 16:44:54.573 7173 7173 E AndroidRuntime:位于android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3854)   03-28 16:44:54.573 7173 7173 E AndroidRuntime:在android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityIte

我的Android应用程序有几个活动和片段,但是如果我理解得很好,这应该是一个Android系统活动。当我列出带有“ adb shell pm list features”的设备时,我的设备也具有“ feature:android.software.device_admin” 我的设备是否有任何限制,无法处理ACTION_ADD_DEVICE_ADMIN意图?

注意:我遵循了此Google Android指南https://developer.android.com/guide/topics/admin/device-admin.html

谢谢

2 个答案:

答案 0 :(得分:0)

常量/变量mDeviceAdminRen的内容是什么?您的代码片段似乎缺少了这一点。

它应包含设备管理组件的组件名称,因此在您的情况下为DeviceAdminRen.getComponentName(Context context)

是这样吗?

答案 1 :(得分:0)

在使用Android NDK构建应用程序时,我在C ++库的Makefile中添加了LOCAL_PRIVILEGED_MODULE构建指令。 gnu-libstdc ++ / Android.mk:LOCAL_PRIVILEGED_MODULE:= true

而且有效!! Android中出现提示,要求启用设备管理,然后可以轻松创建辅助用户。