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

本文主要介绍了Android App之间传递参数和回传数据的方法。通过示例代码展示了调用者APP如何传递数据给被调用APP,以及被调用APP如何获取数据并回传数据给调用者APP。同时还给出了判断APP是否在后台运行的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

ListprocessList = 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);

}

}

---------------------

作者:xiejunna

来源:优快云

原文:https://blog.youkuaiyun.com/xiejunna/article/details/70159774

版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值