首页 > 解决方案 > 我可以以编程方式(根)从系统对话框中选择项目吗?

问题描述

我可以通过以下方式打开“使用 USB 到”系统对话框:

val p = Runtime.getRuntime().exec(arrayOf("su", "-c", "system/bin/sh"))
val stdout = DataOutputStream(p.outputStream)
stdout.writeBytes("am start com.android.settings/.UsbSettings")
stdout.flush()
stdout.close()

我还想以编程方式选择任何选项(例如“传输文件”)?

根植于Android的这可能吗?

在此处输入图像描述

更新

似乎我可以玩input keyevent https://stackoverflow.com/a/28969112/9766649(例如61 --> "KEYCODE_TAB"并且62 --> "KEYCODE_SPACE"很有用)

标签: android

解决方案


解决了!

例如,从对话框中选择第四项(“给这部手机充电”):

val process = Runtime.getRuntime().exec(arrayOf("su", "-c", "system/bin/sh"))
val stream = DataOutputStream(process.outputStream)
stream.writeBytes("am start com.android.settings/.UsbSettings\n")
stream.writeBytes("input keyevent 21\n") // KEYCODE_DPAD_LEFT
stream.writeBytes("input keyevent 20\n") // KEYCODE_DPAD_DOWN
stream.writeBytes("input keyevent 20\n") // KEYCODE_DPAD_DOWN
stream.writeBytes("input keyevent 20\n") // KEYCODE_DPAD_DOWN
stream.writeBytes("input keyevent 66\n") // KEYCODE_ENTER
stream.flush()
stream.close()

(要选择第一项,只需删除所有带有 的行KEYCODE_DPAD_DOWN


推荐阅读