You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native项目中获取设备所有者权限并实现单应用锁定的问题求助

React Native项目中获取设备所有者权限并实现单应用锁定的问题求助

我是编程新手,现在需要让公司的React Native应用成为设备所有者,实现*“单应用设备”*的效果——阻止其他应用打开。但查了官方文档、找了ChatGPT和ClaudeAI帮忙,折腾了半天还是没成功,现在完全摸不着方向,真心希望能得到大家的帮助!

我的项目环境

  • React Native版本:0.64.4
  • SDK版本:30

目前已经做的操作

我按照查到的资料做了以下几步:

  1. 创建了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);
}
  1. 在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>
  1. 在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>
  1. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:23:01