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

被调用(启动)的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);
    }





}
  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值