分类 标签 存档 黑客派 订阅 搜索

Android 开发——通过广播启动另一个应用的 Activity

113 浏览0 评论

需求:现在有应用A和应用B,我需要在A应用中启动B应用中的某个Activity

实现:A应用中的Activity发送广播,关键代码如下:

String broadcastIntent = "com.example.android.notepad.NotesList";//自己自定义
Intent intent = new Intent(broadcastIntent);
this.sendBroadcast(intent);

B应用中需要一个BroadcastReceiver来接收广播,取名TestReceiver继承BroadcastReceiver重写onReceive方法启动一个activity,关键代码如下:

public void onReceive(Context context, Intent intent{
    if(intent.getAction().equals(“com.example.android.notepad.NotesList”)){//这可以通过判断,启动一个或者多个Activity
      Intent noteList = new Intent(context,NotesList.class);
      noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      context.startActivity(noteList);
    }
}

到这代码就完成了,当然在AndroidManifest.xml中要对TestReceiver进行注册,代码如下: ``` ``` 这样就完成了通过广播启动另一个应用Activity。 注意问题:Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用 Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,解决办法是,加一个flag,也就是这句noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);的作用。如果不添加这句,就会报`android.util.AndroidRuntimeException`

同样适用于远程服务启动Activity

本文摘自逍遥K杰的博客(有改动)

--EOF--

评论  
留下你的脚步
推荐阅读