0

我认为提出这个问题的最佳方式是通过示例,所以我将使用特定的应用程序。

AndroidWebKey应用程序有一个启动时启动的选项,我更喜欢保持禁用状态。但我想通过远程 SSH控制台手动启动这个程序。

我的尝试是这个命令(可以看出,失败):

root@S3:/ # am start -a android.intent.action.MAIN -n com.webkey/.BootStarter
am start -a android.intent.action.MAIN -n com.webkey/.BootStarter
Starting: Intent { act=android.intent.action.MAIN cmp=com.webkey/.BootStarter }
Error type 3
Error: Activity class {com.webkey/com.webkey.BootStarter} does not exist.

看来我指的不是正确的类。这就是我找到该课程的方式:

root@S3:/ # dumpsys package resolvers receiver | awk '/android.intent.action.BOOT_COMPLETED/{p=1;next}/:/{p=0}p {print $2}' | grep webkey
com.webkey/.BootStarter
com.webkey/androidx.work.impl.background.systemalarm.RescheduleReceiver

实际上,我什至不知道如何获得正确的类来启动一个知道其合格应用程序名称的程序。

我不知道问题是否出在 ADB 配置中:

root@S3:/ # adb shell
adb shell
* daemon not running. starting it now on port 5038 *
* daemon started successfully *
error: device not found

有人可以给我任何想法来手动启动正确的程序吗?

补充说明:

  • 所有 shell 测试都以root ( su) 身份执行。
  • 该设备已植根。也欢迎回答非根设备。

新测试:

TeamViewer Host相同的示例:

root@S3:/ # dumpsys package resolvers receiver | awk '/android.intent.action.BOOT_COMPLETED/{p=1;next}/:/{p=0}p {print $2}' | grep team -i
com.teamviewer.host.market/com.teamviewer.host.receiver.BootReceiver

但它没有启动,也没有:

root@S3:/ # am start -n com.teamviewer.host.market/com.teamviewer.host.receiver.BootReceiver
Starting: Intent { cmp=com.teamviewer.host.market/com.teamviewer.host.receiver.BootReceiver }
Error type 3
Error: Activity class {com.teamviewer.host.market/com.teamviewer.host.receiver.BootReceiver} does not exist.
4

1 回答 1

0

BootStarter 是一个广播接收器。所以“am start”命令是不正确的。你应该发送广播。

am broadcast -a android.intent.action.BOOT_COMPLETED -n com.webkey/com.webkey.BootStarter   

我不知道您的真实期望,但我们有关于如何控制 Webkey 的文档。请查看此站点: https ://github.com/webkeydev/webkey-headless-control

无论如何,如果您有任何问题,请与我联系。我是 Webkey 的首席开发人员。

于 2020-09-19T07:56:42.240 回答