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

来源:互联网 发布:淘宝评价如何修改 编辑:程序博客网 时间:2024/06/12 01:44
    近期开发项目的时候,发现增加功能模块需要的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

0 0
原创粉丝点击