Android中一个APP启动另一个APP并传递参数

来源:互联网 发布:优力特对讲机写频软件 编辑:程序博客网 时间:2024/05/21 14:50

被调用(启动)的APP:
项目名字:Demo_ybs
项目包名:com.ybs.demo_ybs
被调用APP中获取调用者的传递数据:

package com.ybs.demo_ybs;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        getAppData();    }    private void getAppData() {        Intent intent=getIntent();        if(intent.getFlags()==101){            String data_str = intent.getStringExtra("data");            Log.i("tag", data_str);            //tag: 调用者传递过来的数据        }    }}

调用者APP:
项目名字:Demo1
项目包名:com.ybs.ymt
调用者APP中传递数据:

package com.ybs.ymt;import android.os.Bundle;import android.view.View;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;public class MainActivity extends Activity {    private String reqData;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    private String setData() {        reqData = "调用者传递过来的数据";        return reqData;    }    //点击按钮后触发调用另一个APP    public void onClcik(View view) {        //要调用另一个APP的activity所在的包名        String packageName = "com.ybs.demo_ybs";        //要调用另一个APP的activity名字        String activity = "com.ybs.demo_ybs.MainActivity";        ComponentName component = new ComponentName(packageName, activity);        Intent intent = new Intent();        intent.setComponent(component);        intent.setFlags(101);        intent.putExtra("data", setData());        startActivity(intent);    }}

方法2:
被调用(启动)的APP:
项目名字:Demo_ybs
项目包名:com.ybs.demo_ybs
被调用APP中获取调用者的传递数据:

package com.ybs.demo_ybs;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        getAppData();    }    private void getAppData() {        Intent intent=getIntent();        if(intent.getFlags()==101){            //String data_str = intent.getStringExtra("data");            Bundle bundle=intent.getExtras();            String data_str = bundle.getString("data");            Log.i("tag", data_str);        }    }    //点击按钮触发此事件    public void onClick(View view){        Intent data = new Intent();          //参数1:要调用另一个APP的activity所在的包名        //参数2:要调用另一个APP的activity名字        data.setClassName("com.ybs.ymt", "com.ybs.ymt.MainActivity");        data.putExtra("return_data", "回传给调用者的数据");          setResult(10, data); //设置返回数据           this.finish(); //关闭当前Activity          Log.i("tag", "回传给调用者的数据");    }}

调用者APP:
项目名字:Demo1
项目包名:com.ybs.ymt
调用者APP中传递数据:

package com.ybs.ymt;import android.os.Bundle;import android.util.Log;import android.view.View;import android.app.Activity;import android.app.ActivityManager;import android.app.ActivityManager.RunningAppProcessInfo;import android.app.KeyguardManager;import android.content.ComponentName;import android.content.Intent;import android.content.pm.PackageManager;public class MainActivity extends Activity {    private String reqData;    private int IMPORTANCE_FOREGROUND=100;    private int IMPORTANCE_VISIBLE=130;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void onClcik(View view) {        /*        //此方法也可以去启动另一个APP        Intent intent = new Intent();        intent.setComponent(new ComponentName("com.ybs.demo_ybs", "com.ybs.demo_ybs.MainActivity"));        if (!isBackgroundRunning()) {            intent.setAction("android.intent.action.MAIN");            intent.addCategory(Intent.CATEGORY_LAUNCHER);        }        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);        intent.putExtra("data", "调用者传递过来的数据aaa");        startActivity(intent);*/        Intent intent = new Intent();        intent.setFlags(101);        Bundle bundle = new Bundle();        bundle.putString("data", "调用者传递过来的数据aaa");        intent.putExtras(bundle);        //参数1:要调用另一个APP的activity所在的包名        //参数2:要调用另一个APP的activity名字        intent.setClassName("com.ybs.demo_ybs", "com.ybs.demo_ybs.MainActivity");        startActivityForResult(intent, 1);    }    //在启动前进行一次判断:app是否在后台运行。一下是判断app是否运行的方法:    private boolean isBackgroundRunning() {        String processName = "com.ybs.demo_ybs";        ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);        KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);        if (activityManager == null)            return false;        // get running application processes        List<ActivityManager.RunningAppProcessInfo> processList = activityManager                .getRunningAppProcesses();        for (ActivityManager.RunningAppProcessInfo process : processList) {             /*             BACKGROUND=400 EMPTY=500 FOREGROUND=100             GONE=1000 PERCEPTIBLE=130 SERVICE=300 ISIBLE=200              */              if (process.processName.startsWith(processName)) {                boolean isBackground = process.importance != RunningAppProcessInfo.IMPORTANCE_FOREGROUND                        && process.importance != RunningAppProcessInfo.IMPORTANCE_VISIBLE;                boolean isLockedState = keyguardManager                        .inKeyguardRestrictedInputMode();                if (isBackground || isLockedState)                    return true;                else                    return false;            }        }        return false;    }    //此方法中可以接收另一个app回传回来的数据    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        Log.i("tag", "onActivityResult1");        if(resultCode == 10 && requestCode == 1){            Log.i("tag", "onActivityResult2");                String return_data=data.getStringExtra("return_data");                Log.i("tag", "调用者返回的数据:" + return_data);        }            super.onActivityResult(requestCode, resultCode, data);    }}
1 1
原创粉丝点击