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
- Android中一个APP启动另一个APP并传递参数
- android中实现一个APP启动另一个APP并实现类似微信分享
- Android在一个APP中启动另一个APP
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- android 一个app 启动另一个app
- Android 一个app启动另一个app
- Android 通过一个app 启动另一个app
- 一个app中启动另一个app
- Android 在App中启动另一个App
- Ubuntu下Python虚拟环境的开启与关闭
- Ubuntu下tomcat安装
- Sizeof与Strlen的区别与联系
- Struts2 拦截器的使用,验证是否已经登陆
- 自己动手实现简单对象关系库谈到异常的处理与抛出
- Android中一个APP启动另一个APP并传递参数
- MFC:Tab控件的使用(转)
- iOS JavaScriptCore
- Swift的算术运算符和赋值运算符
- Singleton(单例模式)
- ubuntu 解压rar报错
- js function同一个方法,可传参,可不传参
- 打造Android万能下拉刷新上拉加载控件
- 解决苹果虚拟机安装过程中出现的问题