React Native项目中获取设备所有者权限并实现单应用锁定的问题求助
React Native项目中获取设备所有者权限并实现单应用锁定的问题求助
我是编程新手,现在需要让公司的React Native应用成为设备所有者,实现*“单应用设备”*的效果——阻止其他应用打开。但查了官方文档、找了ChatGPT和ClaudeAI帮忙,折腾了半天还是没成功,现在完全摸不着方向,真心希望能得到大家的帮助!
我的项目环境
- React Native版本:0.64.4
- SDK版本:30
目前已经做的操作
我按照查到的资料做了以下几步:
- 创建了
AdminReceiver.java类,代码如下:
@Override public void onEnabled(Context context, Intent intent) { super.onEnabled(context, intent); } @Override public void onDisabled(Context context, Intent intent) { super.onDisabled(context, intent); }
- 在
AndroidManifest.xml中添加了该接收器的引用:
<receiver android:name=".AdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_receiver" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
- 在
res/xml文件夹下创建了权限配置文件device_admin_receiver.xml,里面包含了所需(甚至可能多余)的权限:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <disable-camera /> <disable-applications /> <force-lock /> <limit-password /> <watch-login /> <reset-password /> <wipe-data /> </uses-policies> </device-admin>
- 在
MainApplication.java里加了一段状态检查的代码(不过我感觉这段代码好像没起到实际作用):
@Override public void onCreate() { super.onCreate(); // Initialize SoLoader SoLoader.init(this, /* native exopackage */ false); // Dispatcher for Expo modules ApplicationLifecycleDispatcher.onApplicationCreate(this); // Detailed logging (optional) try { DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName adminComponent = new ComponentName(this, AdminReceiver.class); Log.d("MainApplication", "Is Device Owner: " + dpm.isDeviceOwnerApp(getApplicationContext().getPackageName())); Log.d("MainApplication", "Is Admin Active: " + dpm.isAdminActive(adminComponent)); } catch (Exception e) { Log.e("MainApplication", "Error checking device admin status", e); } }
遇到的问题
当我执行adb命令尝试设置设备所有者时:
adb shell dpm set-device-owner com.myGroup.myPackage/.AdminReceiver
得到了如下错误提示:
Error: Unknow admin: ComponentInfo{com.myGroup.myPackage/com.myGroup.myPackage.AdminReceiver}
备注:内容来源于stack exchange,提问作者Lucas Dreveck
相关产品推荐
相关产品推荐

