android--通过广播启动另一个应用的Activity
2014-04-06 16:11
453 查看
需求:现在有应用A和应用B,我需要在A应用中启动B应用中的某个Activity
实现:A应用中的Activity发送广播,关键代码如下:
B应用中需要一个BroadcastReceiver来接收广播,取名TestReceiver继承BroadcastReceiver重写onReceive方法启动一个activity,关键代码如下:
到这代码就完成了,当然在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:
Calling startActivity() from outside of an Activity,Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
实现:A应用中的Activity发送广播,关键代码如下:
String broadcastIntent = "com.example.android.notepad.NotesList";//自己自定义 Intent intent = new Intent(broadcastIntent); this.sendBroadcast(intent);
B应用中需要一个BroadcastReceiver来接收广播,取名TestReceiver继承BroadcastReceiver重写onReceive方法启动一个activity,关键代码如下:
if(intent.getAction().equals("com.example.android.notepad.NotesList")){ Intent noteList = new Intent(context,NotesList.class);//可使用onReceive中的参数intent noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//必须加, context.startActivity(noteList); }
到这代码就完成了,当然在AndroidManifest.xml中要对TestReceiver进行注册,代码如下:
<receiver android:name="TestReceiver"> <intent-filter> <action android:name="com.example.android.notepad.NotesList"/> </intent-filter> </receiver>
这样就完成了通过广播启动另一个应用Activity。
注意问题:Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用 Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,解决办法是,加一个flag,也就是这句noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);的作用。如果不添加这句,就会报android.util.AndroidRuntimeException:
Calling startActivity() from outside of an Activity,Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
相关文章推荐
- Android 通过广播启动另一个应用的Activity
- (转)Android开发——通过广播启动另一个应用的Activity
- Android开发——通过广播启动另一个应用的Activity
- Android开发——通过广播启动另一个应用的Activity
- 通过广播启动另一个应用的Activity
- android应用开发实践三----Atcity 通过Intent 来启动另一个Activity来实现简易拨号
- 从一个A应用发广播,在另一个应用B的广播接收者的onReceive()方法中接收此广播并启动这个应用里的activity
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity
- Android 通过包名启动另一个应用(APP)
- Android在一个应用中启动另一个应用的Activity时失败的解决办法
- Android中通过intent启动另一个应用
- Android在一个应用中启动另一个应用的Activity时失败的解决办法
- android 音乐播放 启动方式 (3)服务通过发送广播来控制activity显示进度等
- Android在一个应用中启动另一个应用的Activity的办法
- 【Android】在一个应用中启动另一个应用的Activity时失败的解决办法
- Android Service与Activity之间通信的几种方式(1)---通过broadcast(广播)的形式
- 通过显式Intent启动另一个Activity
- Android - 通过Intent启动Activity
- 使用phonegap插件启动另一个Android+Activity
- Android 从一个APP通过包名启动另一个APP