【问题标题】:No Activity found to handle Intent { act=android.app.action.ADD_DEVICE_ADMIN (has extras) }未找到处理 Intent { act=android.app.action.ADD_DEVICE_ADMIN (has extras) } 的 Activity
【发布时间】:2019-03-28 17:24:52
【问题描述】:

我正在尝试启用设备管理,以便在 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 (has extras) } 的 Activity 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(ResumeActivityItem

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    常量/变量mDeviceAdminRen的内容是什么?您的代码 sn-p 似乎缺少这一点。

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

    是这样吗?

    【讨论】:

    • 是的,就是这样:mDeviceAdminRent = new ComponentName(getActivity(), DeviceAdminRen.class); 但它现在可以按照我下面的答案中的说明工作
    【解决方案2】:

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

    它成功了! Android中有提示要求启用设备管理,然后创建二级用户变得容易。

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 2012-02-20
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多