本文的主要任务是写两个Android APP,让其中的一个APP去启动另外一个APP。其中涉及的原理很简单,就是使用Android的四大组件之一BroadcastReceiver。让其中的一个APP静态注册广播接收器,让另外一个APP发送相应的广播。
本文的APP是基于Android Studio开发的。
一、注册广播接收器端的APP
1、实现一个广播接收器的类,让他继承至BroadcastReceiver,它的具体实现如下:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getStringExtra("TECH-PRO"), Toast.LENGTH_SHORT).show();
/* 启动当前应用程序 */
Intent myIntent = new Intent(context, MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
}
}
类中重载了onReceive()方法,首先Toast一条从发送广播端发送过来的消息,然后通过Intent来启动当前的APP。
2、静态注册这个广播接收器
为了让我们这个广播一直处于可接收的状态,这里选择静态注册广播,在AndroidManifest.xml文件的application属性字段中添加如下字段:
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="cn.edu.syau.broadcastreceiver"/>
</intent-filter>
</receiver>
以上就完成了注册广播接收器端的APP编写。
二、发送广播的APP
发送广播端的APP编写较为容易,主要就是实现广播的发送,注意发送广播的action要和静态注册广播的action保持一致。
首先定义一个Button用于执行发送操作,然后在这个按键总发送广播给广播接收器,具体实现如下:
button = (Button) findViewById(R.id.btnSend);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("cn.edu.syau.broadcastreceiver");
intent.putExtra("TECH-PRO", "启动应用程序");
sendBroadcast(intent);
}
});
至此,就完成了发送广播的APP。
把上面编写的两个APP都安装到手机或者模拟器当中,就可以实现一个APP启动另外一个APP的功能了。