相关疑难解决方法(0)

在android浏览器中打开一个url,避免多个标签

我的项目主要是一个Web应用程序.现在我有一个带有主屏幕小部件的Android应用程序,并希望在内置浏览器中打开某些用户操作的网页.这很容易.在MyAppWidgetProvider.onUpdate中,我创建了一个新的intent:

Intent intent = new Intent("android.intent.action.VIEW", 
    Uri.parse("http://my.example.com/"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.text, pendingIntent);
Run Code Online (Sandbox Code Playgroud)

不幸的是,每次用户点击小部件时都会打开一个新的浏览器窗口/标签.我的页面包含一些在后台运行的花哨的AJAX/javascript并定期发送http请求.所以我最终得到8个包含相同页面的标签,并不断发送8倍数量的http请求.

是否有任何方法,例如不同的操作或其他参数,以避免打开新标签?

作为一种解决方法,我现在正在考虑创建一个包含WebView的新活动,但希望避免这种复杂性.

android

16
推荐指数
1
解决办法
9807
查看次数

当前打开选项卡中 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
查看次数