在Android中使用广播

时间:2013-10-18 07:45:38

标签: java android android-intent broadcastreceiver android-broadcast

有谁知道如何将sendBroadcast和BroadcastReceiver用于不同的应用程序?实际上我已经在同一个项目中使用过sendBroadcast和BroadcastReceiver。现在我想尝试发送到另一个应用程序。有人知道吗?

在我以前的项目中,我在mainActivity中广播:

Intent broadCastIntent = new Intent("SendMessage");
broadCastIntent.putExtra("NAME", gameName);
broadCastIntent.putExtra("JOB",jobStatus);
broadCastIntent.putExtra("STATUS",gameStatus);
sendBroadcast( broadCastIntent );
Log.d("Broadcast sent", gameName );

另外我添加方法来检查意图:

protected void onResume()
    {

        if (receiver == null)
        {
            receiver = new myBroadcastReceiver(); --> Here I call the receiver from another package
        }
        registerReceiver(reciever, new IntentFilter("SendMessage"));

    }

    @Override
    protected void onPause()
    {
        super.onPause();
        unregisterReceiver(reciever);
    }

在另一个包中但在一个项目中,我创建了myBroadcastReceiver类来接收意图:

public class myBroadcastReceiver extends BroadcastReceiver 
{

    @Override
    public void onReceive(Context context, Intent intent) {

        String status = intent.getStringExtra("STATUS");
        String job = intent.getStringExtra("JOB");
        String media = intent.getStringExtra("MEDIA");
        GameWorldExtension.job = job;
        GameWorldExtension.media = media;
        GameWorldExtension.status = status;
        Log.d("receiver", "Got message: " + GameWorldExtension.status);
    }

}

我试过,它运作正常。现在我想尝试发送到另一个应用程序。我尝试了很多方法,但并没有成功。有谁知道如何发送正确的顺序?谢谢

1 个答案:

答案 0 :(得分:3)

我认为这篇文章可以帮到你。有一个例子是BroadcastReceiver,它正在监听“onWifiChange”事件。 How to use Broadcast Receiver in different Applications in Android?

-------添加

发件人方:

1)发件人类:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = new Intent("pacman.intent.action.BROADCAST");
    intent.putExtra("message","Wake up.");
    sendBroadcast(intent);
}

在接收方:

1)接收者类:

public class MyBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("Message at Pacman received!");
    }
}

2)Receiver清单文件:

<receiver android:name="com.ex.myapplication2.MyBroadcastReceiver">
    <intent-filter>
        <action android:name="pacman.intent.action.BROADCAST" />
    </intent-filter>
</receiver>