如何在 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 浏览器对话框。
您好,我正在开发 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 浏览器对话框。