【问题标题】:How to Refresh current page in Webview on reception of push notification如何在收到推送通知时刷新 Webview 中的当前页面
【发布时间】:2017-05-02 11:28:49
【问题描述】:

我在我的应用程序中集成了 webview 和通知。当前台收到通知时,它会显示 Toast,而在后台会显示推送通知。

我想让应用在收到通知时做两件事:

  1. 前台:刷新当前页面。
  2. 背景:点击通知重定向到特定链接。

注意:Firebase 用于通知

下面是webview代码:

        mWebview =(WebView) findViewById(R.id.webview1);

        WebSettings webSettings = mWebview.getSettings();

        mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
        mWebview.setWebViewClient(new CustomWebViewClient());

        mWebview.loadUrl("http://example.com");

【问题讨论】:

    标签: android webview push-notification android-webview


    【解决方案1】:

    EventBus可以满足你的要求,你可以去了解它的用法。

    https://github.com/greenrobot/EventBus

    注册WebView的Activity,并创建一个方法。

    EventBus.getDefault().register(this);
    
    
    @Subscribe(threadMode = ThreadMode.MAIN)  
    public void onMessageEvent(MessageEvent event) {/* Do something */};
    

    点击通知发送消息,会回调onMessageEvent。

    EventBus.getDefault().post(new MessageEvent());
    

    【讨论】:

    • 你能举个例子吗?代码非常感谢
    • 您可以在onMessageEvent上刷新网页视图。
    • 老兄,我是 android 的超级新手,你能说得更具体点吗?
    【解决方案2】:

    在 Activity 中注册广播接收器并从 Firebase 网络服务发送 Braodcast 并在 Activity 中接收以更新 webview

     @Override
            protected void onResume() {
                // TODO Auto-generated method stub
                super.onResume();
    
                IntentFilter intentFilter = new IntentFilter(
                        "update_webview");
    
                mReceiver = new BroadcastReceiver() {
    
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        //extract our message from intent
                        String msg_for_me = intent.getStringExtra("some_msg");
                        //log our message value
    
    
                    }
                };
                //registering our receiver
                this.registerReceiver(mReceiver, intentFilter);
            }
    
            @Override
            protected void onPause() {
                // TODO Auto-generated method stub
                super.onPause();
                //unregister our receiver
                this.unregisterReceiver(this.mReceiver);
            }
    
    Now send Braodcast from FCM  service where your received notification 
    
    Intent i = new Intent("update_webview").putExtra("some_msg", "I will be sent!");
                this.sendBroadcast(i);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 2015-08-25
      • 2021-04-12
      • 2017-05-11
      相关资源
      最近更新 更多