我的项目主要是一个Web应用程序。现在我有一个带有主屏幕小部件的Android应用程序,并希望在内置浏览器中打开某些用户操作的网页。这很容易。在MyAppWidgetProvider.onUpdate中,我创建了一个新的意图:
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);
不幸的是,每次用户点击窗口小部件时,都会打开一个新的浏览器窗口/选项卡。我的页面包含一些在后台运行的花哨的AJAX / javascript并定期发送http请求。所以我最终得到8个包含相同页面的标签,并不断发送8倍的http请求。
有没有办法,例如不同的操作或其他参数,以避免打开新标签?
作为一种解决方法,我现在正在考虑创建一个包含WebView的新活动,但希望避免这种复杂性。
答案 0 :(得分:22)
是的,这是可能的。 使用http://developer.android.com/reference/android/provider/Browser.html#EXTRA_APPLICATION_ID确保为您的应用程序重用相同的浏览器选项卡。例如:
Context context = widget.getContext();
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
答案 1 :(得分:-1)
据我所知,无法使用Intent指定是否打开新选项卡。我甚至做了一些看,但无论如何也无法检查哪些标签是打开的。 您可以尝试的另一件事是跟踪用户最近是否已从您的应用程序发送到浏览器活动,并检查浏览器是否仍处于打开状态,但我可以再次以多种方式看到这个问题。 / p>
你的活动想法可能是这种情况下最好的赌注之一,虽然我可以理解你为什么要避免这种情况。