android如何在app端设置USB调试模式

本文介绍了如何在Android系统中通过编程方式开启USB调试模式。首先在Settings包下创建DevelopmentReceiver.java广播接收类,然后在AndroidManifest.xml中静态注册该广播,最后在APP端发送特定广播来触发USB调试模式的开关。这种方法已在高通MSM8909、MSM8953,RK3288设备上的Android 7.1.2系统上测试成功。

分析:android系统设置的部分都在packages\apps\Settings目录下面,所以要修改打开‘开发者选项’的‘USB调试’需要修改的部分就在此目录下面

第一步:创建一个广播类 packages\apps\Settings\src\com\android\settings目录下面创建一个DevelopmentReceiver.java接收类

+package com.android.settings;

  • import android.content.BroadcastReceiver;

  • import android.content.Context;

  • import android.content.Intent;

  • import android.provider.Settings;

  • import android.util.Log;

  • /**

    • Created by wf on 2022/4/20 - 17:53
  • **/

  • public class DevelopmentReceiver extends BroadcastReceiver {

  • @Override

  • public void onReceive(Context context, Intent intent) {

  •    String action = intent.getAction();
    
  •    String develepmentKey = intent.getStringExtra("usbDebugKey");
    
  •        if (develepmentKey.equals("open")) {//开启USB调试模式
    
  •            Settings.Global.putInt(context.getContentResolver(), Settings.Global.ADB_ENABLED, 1);
    
  •            Log.v("wufeng", "open usb development model");
    
  •        } else if (develepmentKey.equals("close")) {//关闭USB调试模式
    
  •            Settings.Global.putInt(context.getContentResolver(), Settings.Global.ADB_ENABLED, 0);
    
  •            Log.v("wufeng", "close usb development model");
    
  •        }
    
  • }

  • }

第二步:在 packages\apps\Settings目录下面的AndroidManifest.xml文件下面添加如下代码(静态注册广播)

  •    <!--start:add by wf @2022/04/20 -->
    
  •    <receiver android:name="com.android.settings.DevelopmentReceiver">
    
  •        <intent-filter>
    
  •            <action android:name="android.intent.action.OPENANDCLOSE_USB_MODEL" />
    
  •        </intent-filter>
    
  •    </receiver>
    
  •    <!--end:add by wf @2022/04/20 -->
    

第三步:就是在上层应用(APP端)发送一个广播

  • public static void sendBroadCast(Context mContext, String data) {
  •    Intent intent = new Intent("android.intent.action.OPENANDCLOSE_USB_MODEL");
    
  •    intent.putExtra("usbDebugKey", data);
    
  •    mContext.sendBroadcast(intent);
    
  • }

/**
* 判断USB调试模式状态
* true:open
* false:close
*
* @param mContext
* @return
*/
public static boolean judgyUSBDebug(Context mContext) {
boolean enableAdb = (Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.ADB_ENABLED, 0) > 0);
Log.v(“wufeng”, “state:” + enableAdb);
return enableAdb;
}

注:1,android.intent.action.OPENANDCLOSE_USB_MODEL这个参数可以自行定义
2,在高通MSM8909、MSM8953,RK3288,android7.1.2上测试可行。
3,在app端设置USB调试模式前,最好是先判断当前USB的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值