相关疑难解决方法(0)

Android从服务开放浏览器避免多个标签

我正在尝试使用在浏览器的当前选项卡中打开的链接从我的服务打开浏览器窗口.我用的时候

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

如果在我的服务启动意图之前浏览器已打开并位于前台,浏览器将在同一窗口/选项卡中打开链接.如果浏览器已最小化并且服务启动了意图,则浏览器将在新窗口/选项卡中打开网页.

我不能使用Web视图,因为它需要在Web浏览器中,它只会处理默认浏览器.我已经检查了在Android浏览器打开网址的线程,避免多个标签,但它没有答案.我也试过强制关闭浏览器,但这也行不通.

感谢您的任何帮助!

java android

8
推荐指数
1
解决办法
2679
查看次数

当前打开选项卡中 Mozilla Firefox 应用程序中的 Android 打开链接

我有一个非常具体的要求:我需要在浏览器中打开一个 URL 链接(不是在 a 中WebView),我需要它在当前打开的选项卡中打开,即打开的页面应该是一个“重定向”(意思相同标签)。

基于多个 SO 帖子的共识(见下文),这样做的方法如下:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.putExtra(Browser.EXTRA_APPLICATION_ID, packageName);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

具体来说是Browser.EXTRA_APPLICATION_ID指示浏览器在同一选项卡中打开链接:

在此处输入图片说明

现在理论上,这应该适用于所有浏览器。

这里packageName需要注意的是,上面需要是你希望打开的浏览器的包名(例如com.android.chromeorg.mozilla.firefox),而不是你的应用程序的包名。

即使文档要求您使用自己应用程序的包名称,如果您使用自己应用程序的包名称,它也不会在当前打开的选项卡中打开链接。Chrome 和 Firefox 都会在新标签页中打开链接。

因此,让它工作的诀窍是设置packageNamecom.android.chrome,瞧,Chrome 在当前打开的选项卡中打开链接。好极了!

同样的技巧不适用于 Firefox。

我怎样才能使这项工作在任何/所有浏览器上都能正常工作?

显然,这是 Firefox 的一个已知问题:

一个Firefox 不处理Browser.EXTRA_APPLICATION_ID来自 Intent的标志

Android Mozilla FireFox 未在新选项卡中打开页面

这个bug修复了吗?有没有一种已知的方法可以让 Firefox 在同一个选项卡中打开链接?

我怎样才能使这项工作适用于任何/所有浏览器?

参考资料

1 . Android 中是否有任何方法可以强制打开要在 Chrome 中打开的链接? …

firefox android webkit android-intent android-browser

5
推荐指数
1
解决办法
1298
查看次数

Browser.EXTRA_APPLICATION_ID在平板电脑中不起作用.您是否知道其他方法可以重用Browser.apk的选项卡?

EXTRA_APPLICATION_ID似乎无法在平板电脑中使用.在我的服务意图启动浏览器时,您是否知道重复使用Browser.apk的选项卡?这与9902225直接相关.任何提示都表示赞赏.

原因:如果设备是平板电脑,则不会调用resuseTab().

见行:

* 3-tablet) Open new tab
Run Code Online (Sandbox Code Playgroud)

见行:

if (activateVoiceSearch || !BrowserActivity.isTablet(mActivity)) {
Run Code Online (Sandbox Code Playgroud)

// Browser.apk源代码(Android 4.0.3_r1-6)

com.android.browser.IntentHandler

void onNewIntent(Intent intent) {
....
   /*
     * TODO: Don't allow javascript URIs
     * 0) If this is a javascript: URI, *always* open a new tab
     * 1) If this is a voice search, re-use tab for appId
     *    If there is no appId, use current tab
     * 2) If the URL is already opened, switch to that tab
     * 3-phone) …
Run Code Online (Sandbox Code Playgroud)

browser android android-intent

0
推荐指数
1
解决办法
1763
查看次数