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

    近期开发项目的时候,发现增加功能模块需要的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

你可能感兴趣的:(android,app间数据交互)