2

在加载 Webview 的主 Activity 中,根据启动它的位置确定要加载的 url。

Bundle extras = getIntent().getExtras();
       if (extras != null) {
           String theurl =  getIntent().getExtras().getString("url");
            webView.loadUrl(theurl);    
       } else {
             webView.loadUrl("http://mysite.com");
       } 

如果应用程序是一个新实例并从主屏幕加载,它会加载默认 url。

如果应用程序未运行并且我单击通过谷歌云消息发送的通知,则应用程序会加载自定义 URL。

这按预期工作。

我的问题在于应用程序已经在后台运行时,当我单击通知时,它会将应用程序带到最前面但不会加载新的 url,它保持默认值。

我不太确定标志,我之前确实遇到过这个问题,并且它是固定它的标志的某种组合。

        Intent notificationIntent = new Intent(context, MainActivity.class);
    notificationIntent.putExtra("url", url);

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );

    int requestID = (int) System.currentTimeMillis();

    PendingIntent intent = PendingIntent.getActivity(context, requestID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

帮助将不胜感激。

编辑

如果我添加标志 PendingIntent.FLAG_CANCEL_CURRENT 这几乎解决了这个问题,虽然它重新加载了整个主要活动(启动屏幕被调用),我希望它重用现有的 webview。

4

1 回答 1

1

这是您要查找的标志:FLAG_ACTIVITY_CLEAR_TASK

如果在传递给 Context.startActivity() 的 Intent 中设置,则此标志将导致与活动关联的任何现有任务在活动启动之前被清除。也就是说,该活动成为一个空任务的新根,并且所有旧活动都已完成。这只能与 FLAG_ACTIVITY_NEW_TASK 结合使用。

编辑: 如果您将 webview 代码放在 onResume 中,然后不使用任何标志,它应该可以正常工作。

于 2013-09-29T01:13:46.727 回答