【问题标题】:Launching on android WEBAPP with ADB使用 ADB 在 android WEBAPP 上启动
【发布时间】:2021-10-16 20:40:42
【问题描述】:
有没有使用 adb 启动 Web 应用程序的方法?
Web 应用程序是使用 manifest.json 创建的,并使用 chrome 浏览器保存在 android 上。
我尝试使用 adb shell pm list packages 获取 Web 应用程序的包名称,但似乎没有任何匹配项。
我想以这种方式启动我的网络应用程序adb shell am start -n com.package.name/com.package.name.ActivityName
我也试过这种方式adb shell am start -a android.intent.action.VIEW -d "url"。这行得通,但这不是我想要的。
【问题讨论】:
标签:
javascript
android
browser
web-applications
adb
【解决方案1】:
假设您来自 Javascript 世界(您可以通过查看 adb 日志来做到这一点),这应该是您正在寻找的内容
adb shell am start -a com.google.android.apps.chrome.webapps.WebappManager.ACTION_START_WEBAPP -n com.android.chrome/org.chromium.chrome.browser.webapps.WebappLauncherActivity --es "org.chromium.chrome.browser.webapp_url" "{your_url}" --es "org.chromium.chrome.browser.webapp_mac" "{webapp_mac}"
请注意,此 url 必须与您在您的 manifest.json 中提到的 start_url 中提到的 url/url-ending 匹配,否则它只会将其作为另一个 chrome 打开标签。
这里的另一个警告是你必须通过 web 应用程序 mac 验证检查,这是由这里提到的核心 android 类完成的 - WebappAuthenticator
Chrome 不会保存已安装网络应用的有效网址
(因为它不知道什么时候卸载了)。所以,
安装后,它会告诉 Launcher 一个消息验证码
(MAC) 以及 Web 应用程序的 URL,然后 Chrome 可以验证
启动时的 MAC,例如{@link #FullScreenActivity}。铬可以
从而区分合法的、已安装的网络应用程序和任意的
其他网址。
我试了一下打开我拥有的一个网络应用程序。过了一会儿我放弃了,迷失在神秘的算法中。也许你会有一些运气。万事如意!!!