End*_*All 4 java android android-context
是否有直接进入“启用 USB 调试”切换的 Intent 或请求启用它的方法?
---情况说明---
我们有一个应用程序,用于同时在多部手机上进行测试,并且它们都启用了开发人员模式。不过全部刷新后需要开启usb调试。
我们知道如何通过 ADB 执行此操作,但我们的用例需要使用传统的 Android 方法。
--- 解释结束
是否可以打开一个对话框,允许用户直接进入“USB 调试”选项?
同样,开发者模式是否可以做到这一点?
handleQsTileLongPressActionIfAny已在 Android 12 中添加,因此仅适用于 Android 12 及更高版本。
在 Android 11 设置应用程序的整个源代码中没有SubSettingLauncher找到WirelessDebuggingFragment.class,因此不可能有替代解决方案。
由于存在开发人员选项的快速设置图块(其中包括无线调试),并且长按一个图块会将您带到“设置”中的相关页面,因此我想弄清楚它发送的意图以及如何复制它。
我首先在“设置”中搜索负责“开发人员选项”页面 UI 的源文件。我发现DevelopmentSettingsDashboardFragment.java哪有这个方法handleQsTileLongPressActionIfAny。在这个方法中,我看到它正在寻找带有操作的意图ACTION_QS_TILE_PREFERENCES和一个EXTRA_COMPONENT_NAME具有与设置包名称(getPackageName()= com.android.settings)和图块子类名称(DevelopmentTiles.WirelessDebugging.class.getName()= com.android.settings.development.qstile.DevelopmentTiles$WirelessDebugging,请参阅DevelopmentTiles.java)匹配的 ComponentName 的额外内容。
根据这些观察,我编写了以下示例代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
经过测试,效果完美。甚至不必启用无线调试的快速设置图块即可工作(尽管必须启用开发人员选项)。
在 Android 13(Google Pixel 7 Pro)上进行测试。
| 归档时间: |
|
| 查看次数: |
1722 次 |
| 最近记录: |