如何在 C 中使用 execlp 本机函数打开浏览器

How to open browser using execlp native function in C

您好,我正在开发 android 应用程序,我在其中使用一个本机 c 库来实现我的应用程序中的某些功能。

我正在从本机 c 代码打开网络浏览器,但是在这里当开发人员指定包名称和默认浏览器的 activity 名称时它工作正常但那些没有默认浏览器的手机则没有像 Motorolo、Nexus 手机等一样工作。他们有 google chrome 浏览器,小米有他们内置的不同浏览器。

然后我试着查看那个库项目的 c 文件,我发现开发人员指定的包名称和 activity 浏览器名称看起来只是它在某些手机上不起作用的原因。

if (version >= 17 || version == 0)
{
    execlp("am", "am", "start", "--user", "0", "-n",
            "com.android.browser/com.android.browser.BrowserActivity",
            "-a", "android.intent.action.VIEW",
            "-d", url, (char *)NULL);
}
else
{
    execlp("am", "am", "start", "-n",
            "com.android.browser/com.android.browser.BrowserActivity",
            "-a", "android.intent.action.VIEW",
            "-d", url, (char *)NULL);
}

我们能否使用简单的 action.View 而不是指定任何浏览器包名称和 activity 名称。让 OS 处理它,这样无论设备上有什么浏览器,我们的源代码都会打开该浏览器。如果是这样,那么这个 execlp.

的参数值是多少

提前致谢。

尝试使用不带“-n ...”的命令,例如

am start -a android.intent.action.VIEW -d http://www.whosebug.com

这将在 android 上打开默认浏览器或显示 select 浏览器对话框。