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

React Native安卓开发如何检测设备USB调试功能是否开启

React Native 安卓USB调试状态检测方案

以下是两种可直接落地的实现方式:

方案1:使用react-native-device-info库(最便捷)

该库是当前维护状态稳定的设备信息工具库,已内置USB调试状态检测能力,无需自行编写原生代码:

  • 安装依赖
    npm install react-native-device-info --save
    # 如使用yarn则执行:yarn add react-native-device-info
    
  • JS端调用示例
    import DeviceInfo from 'react-native-device-info';
    
    const checkUsbDebug = async () => {
      // 方法返回布尔值,true代表USB调试已开启
      const isAdbEnabled = await DeviceInfo.isAdbEnabled();
      if (isAdbEnabled) {
        // 此处写入你弹出提示引导用户关闭USB调试的逻辑
      }
    }
    
  • 注意事项:该方法仅支持安卓平台,iOS调用会默认返回false,无需额外申请安卓权限。

方案2:自定义安卓原生模块实现(灵活可控)

如果不想引入额外第三方库,可以编写少量原生代码实现检测能力:

  1. 新建原生模块类,在安卓目录android/app/src/main/java/[你的应用包名]/下创建UsbDebugModule.java,代码如下:
    package com.你的应用包名;
    
    import com.facebook.react.bridge.ReactApplicationContext;
    import com.facebook.react.bridge.ReactContextBaseJavaModule;
    import com.facebook.react.bridge.ReactMethod;
    import com.facebook.react.bridge.Promise;
    import android.provider.Settings;
    
    public class UsbDebugModule extends ReactContextBaseJavaModule {
        UsbDebugModule(ReactApplicationContext context) {
            super(context);
        }
    
        @Override
        public String getName() {
            return "UsbDebugModule";
        }
    
        @ReactMethod
        public void isAdbEnabled(Promise promise) {
            try {
                int adbEnabled = Settings.Secure.getInt(
                    getReactApplicationContext().getContentResolver(),
                    Settings.Secure.ADB_ENABLED,
                    0
                );
                promise.resolve(adbEnabled == 1);
            } catch (Exception e) {
                promise.resolve(false);
            }
        }
    }
    
  2. 注册原生模块,在同目录下创建MyAppPackage.java,代码如下:
    package com.你的应用包名;
    
    import com.facebook.react.ReactPackage;
    import com.facebook.react.bridge.NativeModule;
    import com.facebook.react.bridge.ReactApplicationContext;
    import com.facebook.react.uimanager.ViewManager;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class MyAppPackage implements ReactPackage {
        @Override
        public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
            return Collections.emptyList();
        }
    
        @Override
        public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
            List<NativeModule> modules = new ArrayList<>();
            modules.add(new UsbDebugModule(reactContext));
            return modules;
        }
    }
    
  3. 在MainApplication.java的getPackages方法中添加你自定义的包:
    @Override
    protected List<ReactPackage> getPackages() {
        List<ReactPackage> packages = new PackageList(this).getPackages();
        packages.add(new MyAppPackage()); // 新增该行代码
        return packages;
    }
    
  4. JS端调用示例:
    import { NativeModules } from 'react-native';
    const { UsbDebugModule } = NativeModules;
    
    const checkUsbDebug = async () => {
      const isAdbEnabled = await UsbDebugModule.isAdbEnabled();
      if (isAdbEnabled) {
        // 写入弹出提示的业务逻辑
      }
    }
    

内容的提问来源于stack exchange,提问作者Shivam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:04