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

        
    }

  

  

posted @ 2015-08-16 16:50  Lammy  阅读(1262)  评论(0编辑  收藏  举报