有谁知道如何将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);
}
}
我试过,它运作正常。现在我想尝试发送到另一个应用程序。我尝试了很多方法,但并没有成功。有谁知道如何发送正确的顺序?谢谢
答案 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>