我正在尝试启用设备管理,因此我可以在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中使用正确的intent过滤器定义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:at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3822)03-28 16 :44:54.573 7173 7173 E AndroidRuntime:at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3854)03-28 16:44:54.573 7173 7173 E AndroidRuntime:at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityIte)
我的Android应用程序有几个活动和片段,但如果我理解得很好,这应该是一个Android系统活动。我的设备还有“功能:android.software.device_admin”,当列出“adb shell pm list features”时我的设备是否有任何限制,阻止处理ACTION_ADD_DEVICE_ADMIN意图?
注意:我按照谷歌Android指南https://developer.android.com/guide/topics/admin/device-admin.html
谢谢
常量/变量mDeviceAdminRen
的内容是什么?您的代码段似乎缺少这一点。
它应该包含设备管理组件的组件名称,因此在您的情况下DeviceAdminRen.getComponentName(Context context)
。
是这样的吗?
当我使用Android NDK构建应用程序时,我在C ++ lib的Makefile中添加了LOCAL_PRIVILEGED_MODULE构建指令。 gnu-libstdc ++ / Android.mk:LOCAL_PRIVILEGED_MODULE:= true
它工作了!! Android中有一个提示要求启用设备管理,然后创建二级用户变得很容易。