精通Android开发 1
intent 概括
Android引入了一个intent的概念来调用组件。
Android的活动组件包括活动(UI组件),服务,广播,和contentProvider
简单层面上将,intent就是告诉你android要执行的一种操作。
一般来说我们经常的用法是这样的
intent = new Intent(this,Install.class); startActivity(intent);
this表示这个activity的上下文,install.class表示要跳转的activity。当然了,这个activity必须也要在Androidmanifast
今天看到书上的另外一种用法:
String actionName= "com.androidbook.intent.action.ShowBasicView"; Intent intent = new Intent(actionName); activity.startActivity(intent);
- 操作名字一般约定为<包名>.intent.action
Android中经常使用intent的地方:
打开浏览器,
呼叫电话号码
打开地图
等
1 //打开一个浏览器,手机有多的浏览器的话,弹出选择框 2 public static void invokeWebBrowser(Activity activity) 3 { 4 Intent intent = new Intent(Intent.ACTION_VIEW); 5 intent.setData(Uri.parse("http://www.google.com")); 6 activity.startActivity(intent); 7 } 8 9 public static void invokeWebSearch(Activity activity) 10 { 11 Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); 12 intent.setData(Uri.parse("http://www.google.com")); 13 activity.startActivity(intent); 14 } 15 public static void dial(Activity activity) 16 { 17 Intent intent = new Intent(Intent.ACTION_DIAL); 18 activity.startActivity(intent); 19 } 20 21 public static void call(Activity activity) 22 { 23 Intent intent = new Intent(Intent.ACTION_CALL); 24 intent.setData(Uri.parse("tel:904-905-5646")); 25 activity.startActivity(intent); 26 } 27 public static void showMapAtLatLong(Activity activity) 28 { 29 Intent intent = new Intent(Intent.ACTION_VIEW); 30 //geo:lat,long?z=zoomlevel&q=question-string 31 intent.setData(Uri.parse("geo:0,0?z=4&q=business+near+city")); 32 activity.startActivity(intent); 33 }
intent的组成
uri
目前我们只是介绍了简单的intent。在呼叫电话的intent中,还要接受一个名为Data的参数,该参数指向一个uri。
这个uri指向了所拨的电话号码
使用extra信息
extra数据以key-value。
getExtras获取intent中包涵的bundle。
putExtras检查intent中是否包涵有包,有的话,加上,没有的话,创建。
还可以添加一些复制的extra数据。
5 intent的类别:
Android会寻找类别被标记为Category_launcher的活动。然后跳出这些活动名和图标。
安全功能软件。
6 使用action_pick
目前我们都是使用intent来操作或者调用另外的一个活动,没有返回结果,那么我们现在使用action_pick试试。
action_pick的理念是启动一个活动来显示列表,允许用户从中选择一个。用户挑选了一会,活动
应该向调用方法返回挑选的uRi。
startActivity()无法返回结果,因它是在一个独立线程中以模拟对话框的形式打开新的活动,将主线程留给主要的事件。
使用startActivityForRest().
get_content
对于action_get_content,你向Android表明你需要一个具有特定MIME类型的项。
挂起intent
http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html