一、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);
}
}