Intent在寻找目标组件的时候有两种方法:第一,通过组件名称直接指定;第二,通过Intent Filter过滤指定.
Intent启动不同组件的方法:
组件名称 | 方法名称 |
Activity | startActivity() startActivityForResult() |
Service | startService() bindService() |
Broadcasts | sendBroadcast() sendOrderedBroadcast() sendStickyBroadcast() |
我用到的是调用Activity,并且传递数据(对象,对象数组,基本数据类型)
<span style="white-space:pre"> </span>Intent intent=new Intent();
intent.setClass(this,GuideActivity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("shop",shop);//发送对象
bundle.putSerializable("catalogs",(Serializable)catalogs_List);//发送List<Object>
bundle.putSerializable("guide",guide);
intent.putExtras(bundle); //将bundle放到intent中
startActivity(intent);
解释:见注释。但是一定要把Model对象实现Serializable接口(序列化),否则传递不了。另外就是要通过bundle对象传递Model对象。
显示网页:
Java代码
- Uri uri = Uri.parse("http://www.google.com");
- Intent it = new Intent(Intent.ACTION_VIEW,uri);
- startActivity(it);
显示地图:
Java代码
- Uri uri = Uri.parse("geo:38.899533,-77.036476");
- Intent it = new Intent(Intent.Action_VIEW,uri);
- startActivity(it);
调用拨号程序:
Java代码
- Uri uri = Uri.parse("tel:xxxxxx");
- Intent it = new Intent(Intent.ACTION_DIAL, uri);
- startActivity(it);
拨打电话:
Java代码
- Uri uri = Uri.parse("tel.xxxxxx");
- Intent it =new Intent(Intent.ACTION_CALL,uri);
还有很多intent调用android内置的应用,可以网上搜搜。