Intent不仅用于应用程序间的交互,大部分时候还是用于应用间Activity/Service之间的交互,例如启动一个新的Activity等。本文简单总结一些关于Intent的使用方法。
1、启动一个新的Activity
这个非常简单,通过实例化一个Intent对象,指明需要启动目标Activity即可,如下:
Intent it1 = new Intent(this, Main2Activity.class);
startActivity(it1);
2、Activity间传值
(1)直接传值:
Intent it2 = new Intent(this, Main2Activity.class);
it2.putExtra("team", "地表最强战队");
it2.putExtra("name", "周杰伦");
startActivity(it2);
接收:
Intent it_get = getIntent();
team = it_get.getStringExtra("team");
name = it_get.getStringExtra("name");
(2)捆绑传值,使用Bundle:
Intent it2 = new Intent(this, Main2Activity.class);
Bundle bd = new Bundle();
bd.putString("team", "地表最强战队");
bd.putString("name", "周杰伦");
it2.putExtras(bd);
startActivity(it2);
接收:
Intent it_get = getIntent();
Bundle bd_get = it_get.getExtras();
team2 = bd_get.getString("team");
name2 = bd_get.getString("name");
这种方法的好处在于:如果有三个Activity,A、B、C,A需要先传值给B,B再传给C,如果使用是直接传值,那么B需要先将A传过来的值先取出来,再重新一个个put传到C,代码出现不必要重复,增加了劳动力。如果使用Bundle,B只需要
Bundle bd_get = it_get.getExtras(); ,就可以直接把 bd_get直接传给C了,很方便。
3、启动应用与服务
通过Intent还可以启动其它应用以及服务,比如
打开网页:
<span style="white-space:pre"> </span>Uri uri = Uri.parse("http://www.hao123.com");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
启动拨号:
<span style="font-size:12px;"><span style="white-space:pre"> </span>Uri uri = Uri.parse("tel:112");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);</span>
等等。
(4)启动Activity并带回调方法
这个有大牛写的很好:
http://www.cnblogs.com/linjiqin/archive/2011/06/03/2071956.html