![](/img/trans.png)
[英]How to enable USB debugging on Android Virtual Device (AVD) from ADB commands and by Java program?
[英]Any way to go directly to the "Enable Usb Debugging" page in Android?
是否有直接转到“启用 USB 调试”切换的 Intent 或请求启用它的方法?
---情况说明---
我们有一个应用程序,用于一次在多部手机上进行测试,并且它们都启用了开发者模式。 但是,当它们全部重新刷新时,需要启用 usb 调试。
我们知道如何通过 ADB 执行此操作,但我们的用例需要使用传统的 Android 方法。
--- 结束说明
是否可以打开一个对话框,让用户直接进入 USB 调试选项?
同样,是否可以使用开发人员模式执行此操作?
我认为没有办法做到这一点,对于开发人员来说,此选项必须由您自己启用,而不是通过编码来启用
不,恐怕不可能。
这是可以使用Intent打开的所有设置的列表 ,请注意,其中不包括USB调试。
您可以获得的最接近的结果是使用ACTION_APPLICATION_DEVELOPMENT_SETTINGS
( 更多信息 )打开开发设置(如问题的后半部分所述),该操作将执行以下操作:
动作:显示设置以允许配置与应用程序开发相关的设置。
由于存在用于开发人员选项(包括无线调试)的快速设置磁贴,并且长按一个可以将您带到设置中的相关页面,我想弄清楚它发送的意图是什么以及如何复制它。
我开始搜索负责设置中开发人员选项页面 UI 的源文件。 我发现DevelopmentSettingsDashboardFragment.java
有方法handleQsTileLongPressActionIfAny
。 在这个方法中,我看到它正在寻找一个带有ACTION_QS_TILE_PREFERENCES
操作的意图和一个EXTRA_COMPONENT_NAME
extra,它有一个 ComponentName 匹配设置包名称( getPackageName()
= com.android.settings
)和 tile 子类名称( DevelopmentTiles.WirelessDebugging.class.getName()
= com.android.settings.development.qstile.DevelopmentTiles$WirelessDebugging
,参见DevelopmentTiles.java
)。
根据这些观察,我编写了以下示例代码:
Intent intent = new Intent(TileService.ACTION_QS_TILE_PREFERENCES);
intent.putExtra(Intent.EXTRA_COMPONENT_NAME, new ComponentName("com.android.settings", "com.android.settings.development.qstile.DevelopmentTiles$WirelessDebugging"));
try {
startActivity(intent);
finish();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
finish();
}
经过测试,它可以完美运行。 无线调试的快速设置磁贴甚至不需要启用它就可以工作(尽管必须启用开发人员选项)。
在 Android 13(Google Pixel 7 Pro)上测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.