如何发送和接收广播消息

Yac*_*ack 47 android message-passing broadcast

我试图在选项卡内的两个活动之间传递数据.我正在尝试使用sendBroadcast().设置断点我永远不会到达onReceive().

表现:

<activity
    android:name=".WebResults"
    android:label="@string/app_name">

    <intent-filter>
        <action android:name="com.toxy.LOAD_URL" />
    </intent-filter>         
</activity>
Run Code Online (Sandbox Code Playgroud)

活动发件人:

Intent intent=new Intent(getApplicationContext(),WebResults.class);
intent.setAction("com.toxy.LOAD_URL");
intent.putExtra("url",uri.toString());
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

活动接收者:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);    
    IntentFilter filter = new IntentFilter("com.toxy.LOAD_URL");
    this.registerReceiver(new Receiver(), filter);
}

private class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        String url = arg1.getExtras().getString("url");
        WebView webview =(WebView)findViewById(R.id.webView);
        webview.loadUrl(url);
    }
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*sar 38

我和你有同样的问题,但我发现:

从清单中删除intent过滤器并进行更改

Intent intent=new Intent(getApplicationContext(),WebResults.class);
Run Code Online (Sandbox Code Playgroud)

对于

Intent intent=new Intent();
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!


小智 7

请用

intent.getStringExtra("");
Run Code Online (Sandbox Code Playgroud)

new Intent();
Run Code Online (Sandbox Code Playgroud)

为我工作.