您的位置:首页 > 移动开发

android中不同app间数据交互(1、简单一次性数据交互)

2016-08-18 19:10 861 查看
近期开发项目的时候,发现增加功能模块需要的jar包与原工程里的jar冲突,无法解决,故转换思想,为什么不能把新增加的功能的业务代码封装进新的app,业务完成后将结果发回项目工程即可。故研究了一下android中不同app之间的数据交互问题,与大家分享:
为描述方便将主项目称为APP1,封装业务代码的项目为APP2。
使用技术:Activity和Broadcast
当我们只需要简单且一次性简单交互数据的时候,APP1利用APP2的包名和全类名就可以开启activity交互数据,如果交互数据的情况比较复杂,就利用Broadcast的不同action,分情况发回处理数据,处理不同的结果;
1.app1中:创建数据传递的广播


/**
* @Method :接收传递的读取数据的广播
*/
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
String app2data;
String action = intent.getAction();
// 接收到广播开始读取数据
app2data = intent.getStringExtra("APP2_DATA");
if (action.equals("app1data_to_app2data_action1")) {

//这种情况下执行的业务。。。。。。。

} else if (action.equals("app1data_to_app2data_action2")) {

//这种情况下执行的业务。。。。。。。

} else {

//其余情况下执行的业务。。。。。。。

}

}
};


2.动态注册创建数据传递的广播
`// 注册接收APP2处理过数据的的广播
IntentFilter myIntentFilter = new IntentFilter();
myIntentFilter.addAction("app1data_to_app2data_action1");
myIntentFilter.addAction("app1data_to_app2data_action2");
registerReceiver(mBroadcastReceiver, myIntentFilter);`
3.启动app1activity处理数据


// 参数一:APP2的包名 参数二:APP2中被启动的activity的全类名
ComponentName comp = new ComponentName("com.example.app2",
"com.example.app2.MainActivity");
Intent i = new Intent();
i.putExtra("APP1_DATA", app1_data);
i.setComponent(comp);
startActivity(i);


4.向app1发回处理的数据
`app1data=getIntent().getStringExtra("app1_data");
//模拟处理数据过程
app2data="处理数据:"+app1data;
//根据处理结果产生两个数据
app2data1="======我是返回的APP2处理过的数据app2data1";
app2data2="======我是返回的APP2处理过的数据app2data1";
//根据处理的不同结果发回数据
if (app2data==null) {
Intent intentBroadcast = new Intent();
intentBroadcast.setAction("app1data_to_app2data_action1");
intentBroadcast.putExtra("APP2_DATA",app2data1);
sendBroadcast(intentBroadcast);
}else{
Intent intentBroadcast = new Intent();
intentBroadcast.setAction("app1data_to_app2data_action2");
intentBroadcast.putExtra("APP2_DATA",app2data2);
sendBroadcast(intentBroadcast);
}
//记得关闭app2
finish();`
5.app1根据数据处理结果进行下一步功能业务


String app2data;
String action = intent.getAction();
// 接收到广播开始读取数据
app2data = intent.getStringExtra("APP2_DATA");
if (action.equals("app1data_to_app2data_action1")) {

//这种情况下执行的业务。。。。。。。

} else if (action.equals("app1data_to_app2data_action2")) {

//这种情况下执行的业务。。。。。。。

} else {

//其余情况下执行的业务。。。。。。。

}


app间简单处理数据就结束了,后续还有其他实现技术更新,敬请期待;

源码参考:

http://download.csdn.net/detail/tangyayong/9606996
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: