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

1815

被折叠的 条评论
为什么被折叠?



