android中一个应用程序启动另外一个应用程序,并传递数据。
一、android一个应用程序启动了另外一个应用程序时候有2中方法。
第一种是知道了调用的app的具体action,category(一般前两个值是默认的即下面方法里的)、包名和类名
public void start(View v) { Intent intent2 = new Intent("android.intent.action.MAIN"); intent2.addCategory("android.intent.category.LAUNCHER"); ComponentName cn = new ComponentName("com.example.secondapp", "com.example.secondapp.MainActivity"); intent2.setComponent(cn);
intent2.putExtra("name","zp"); this.startActivity(intent2); }
第二种方式是只需知道应用程序的包名,这种方式用的较多
public void start2(View v) { PackageManager p=this.getPackageManager(); Intent in=p.getLaunchIntentForPackage("com.example.secondapp"); if(in!=null) { in.putExtra("name","zp"); this.startActivity(in); } else { Toast.makeText(this, "哟,赶紧下载安装这个APP吧", Toast.LENGTH_LONG).show(); } }
二、在启动第二个程序的时候,可以传递参数,即用intent里putextra()值,或者批量用bundle,比如传递时“某某启动了应用程序”参见http://www.2cto.com/kf/201409/332952.html
可先intent.putExtra("name", "zp");再startActivity(intent)在启动的应用程序里采用如下代码:就可以获取数据了
public class MainActivity extends ActionBarActivity { private TextView ed; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed=(TextView) findViewById(R.id.tx); Intent intent =getIntent(); Bundle bundle = intent.getExtras(); if (bundle != null) { String name=(String) bundle.get("name"); ed.setText(name); } }