是否有Intent可直接转到“启用USB调试”切换或请求启用它的方法?---情况说明---我们有一个应用程序,我们用来测试许多手机上一次,他们都启用了开发者模式,但是,usb调试需要启用时,他们都刷新。我们知道如何通过ADB实现这一点,但我们的用例需要使用传统的Android方法。---解释结束是否可以打开一个对话框,允许用户直接进入Usb调试选项?类似地,在开发人员模式下可以做到这一点吗?
hzbexzde1#
不,恐怕不可能。以下是可使用Intent打开的所有设置的列表,请注意USB调试不在其中。最接近的方法是使用ACTION_APPLICATION_DEVELOPMENT_SETTINGS(更多信息)打开开发设置(如问题的后半部分所问),它执行以下操作:活动措施:显示设置以允许配置与应用程序开发相关的设置。
ACTION_APPLICATION_DEVELOPMENT_SETTINGS
dsekswqp2#
我认为没有办法做到这一点,这对开发人员的选项,你必须自己启用它,而不是通过编码
lhcgjxsq3#
由于开发者选项(包括无线调试)存在快速设置磁贴,长按一个磁贴会把你带到设置中的相关页面,我想弄清楚它发送的是什么意图以及如何复制它。
我从搜索负责设置中开发者选项页面UI的源文件开始。我找到了DevelopmentSettingsDashboardFragment.java,它具有方法handleQsTileLongPressActionIfAny。在此方法中,我看到它正在查找具有ACTION_QS_TILE_PREFERENCES操作的Intent和具有与设置包名称匹配的ComponentName的EXTRA_COMPONENT_NAME extra(getPackageName() = com.android.settings)和图块子类名称(DevelopmentTiles.WirelessDebugging.class.getName() = com.android.settings.development.qstile.DevelopmentTiles$WirelessDebugging,请参见DevelopmentTiles.java)。
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
根据这些观察,我编写了以下示例代码:
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(); }
经过测试,它运行得很好,甚至不需要启用无线调试的快速设置磁贴(尽管开发者选项必须启用)。
3条答案
按热度按时间hzbexzde1#
不,恐怕不可能。
以下是可使用Intent打开的所有设置的列表,请注意USB调试不在其中。
最接近的方法是使用
ACTION_APPLICATION_DEVELOPMENT_SETTINGS
(更多信息)打开开发设置(如问题的后半部分所问),它执行以下操作:活动措施:显示设置以允许配置与应用程序开发相关的设置。
dsekswqp2#
我认为没有办法做到这一点,这对开发人员的选项,你必须自己启用它,而不是通过编码
lhcgjxsq3#
前言
由于开发者选项(包括无线调试)存在快速设置磁贴,长按一个磁贴会把你带到设置中的相关页面,我想弄清楚它发送的是什么意图以及如何复制它。
观察结果
我从搜索负责设置中开发者选项页面UI的源文件开始。我找到了
DevelopmentSettingsDashboardFragment.java
,它具有方法handleQsTileLongPressActionIfAny
。在此方法中,我看到它正在查找具有ACTION_QS_TILE_PREFERENCES
操作的Intent和具有与设置包名称匹配的ComponentName的EXTRA_COMPONENT_NAME
extra(getPackageName()
=com.android.settings
)和图块子类名称(DevelopmentTiles.WirelessDebugging.class.getName()
=com.android.settings.development.qstile.DevelopmentTiles$WirelessDebugging
,请参见DevelopmentTiles.java
)。示例(代码)
根据这些观察,我编写了以下示例代码:
测试示例(图片)
经过测试,它运行得很好,甚至不需要启用无线调试的快速设置磁贴(尽管开发者选项必须启用)。