如何从广播接收器访问我的主要活动中的webview?

时间:2015-07-28 14:01:55

标签: android android-intent webview android-webview

我需要的是我有一个广播接收器和一个具有webview的活动。因此,当接收器收到一些事件时,我需要将一些参数传递给webivew或运行一些JS代码。怎么做?

我无法找到从接收器访问主活动中的webview对象的方法。

1 个答案:

答案 0 :(得分:2)

您应该能够将广播接收器定义为活动中的内部类。在同一个活动中,您应该引用广播接收器可以访问的WebView。

public class MyActivity extends Activity {
    WebView mWebview;
    BroadcastReceiver mBroadcastReceiver;

    @Override
    protected void onCreate() {
    ...
    mWebView = (WebView) findViewById(R.id.webview);
    if (mBroadcastReceiver == null) {
        mBroadcastReceiver = new MyBroadcastReceiver();
    }
    ...
    }

    @Override
    public void onResume() {
        //register broadcast receiver
    }

    @Override
    public void onPause() {
        //unregister broadcast receiver
    }
    class MyBroadcastReceiver extends BroadcastReceiver {
         @Override
         onReceive(Intent intent) {
             //Receive intent here
             //Call instance of webview
             mWebView.doSomething();
         }
    }
}

此外,您需要在活动的onResume()方法中动态注册广播接收器,并在onPause()方法中取消注册。