Intent,Action,大全

  1. Intent的中文意思是“意圖,目的”的意思,可以理解爲不同組件之間通信的“媒介”或者“信使”。  
  2.   
  3. 目標組件一般要通過Intent來聲明自己的條件,一般通過組件中的<intent-filter>元素來過濾。  
  4.   
  5. Intent在由以下幾個部分組成:動作(action),數據(data),分類(Category),類型(Type),組件(Component),和擴展信息(Extra)。  
  6.   
  7. Intent在尋找目標組件的時候有兩種方法:第一,通過組件名稱直接指定;第二,通過Intent Filter過濾指定  
  8.   
  9. Intent啓動不同組件的方法  
  10. 組件名稱  方法名稱    
  11. Activity  startActivity()  startActivityForResult()    
  12. Service  startService()  bindService()    
  13. Broadcasts  sendBroadcast()  sendOrderedBroadcast()  sendStickyBroadcast()  
  14.   
  15.    
  16. 常見的Activity Action Intent常量  
  17. 常量名稱   常量值  意義  
  18. ACTION_MAIN  android.intent.action.MAIN   應用程序入口  
  19. ACTION_VIEW  android.intent.action.VIEW  顯示數據給用戶  
  20. ACTION_ATTACH_DATA  android.intent.action.ATTACH_DATA  指明附加信息給其他地方的一些數據  
  21. ACTION_EDIT  android.intent.action.EDIT  顯示可編輯的數據    
  22. ACTION_PICK  android.intent.action.PICK  選擇數據    
  23. ACTION_CHOOSER  android.intent.action.CHOOSER  顯示一個Activity選擇器    
  24. ACTION_GET_CONTENT  android.intent.action.GET_CONTENT  獲得內容    
  25. ACTION_DIAL  android.intent.action.GET_CONTENT  顯示打電話面板    
  26. ACITON_CALL  android.intent.action.DIAL  直接打電話    
  27. ACTION_SEND  android.intent.action.SEND  直接發短信    
  28. ACTION_SENDTO  android.intent.action.SENDTO  選擇發短信    
  29. ACTION_ANSWER  android.intent.action.ANSWER  應答電話    
  30. ACTION_INSERT  android.intent.action.INSERT  插入數據    
  31. ACTION_DELETE  android.intent.action.DELETE  刪除數據    
  32. ACTION_RUN  android.intent.action.RUN  運行數據    
  33. ACTION_SYNC  android.intent.action.SYNC  同步數據    
  34. ACTION_PICK_ACTIVITY  android.intent.action.PICK_ACTIVITY  選擇Activity    
  35. ACTION_SEARCH  android.intent.action.SEARCH  搜索    
  36. ACTION_WEB_SEARCH  android.intent.action.WEB_SEARCH  Web搜索    
  37. ACTION_FACTORY_TEST  android.intent.action.FACTORY_TEST  工廠測試入口點       
  38.   
  39.   
  40. 常見的BroadcastIntent Action常量  BroadcastIntent   
  41. Action字符串常量  描述    
  42. ACTION_TIME_TICK  系統時間每過一分鐘發出的廣播    
  43. ACTION_TIME_CHANGED  系統時間通過設置發生了變化    
  44. ACTION_TIMEZONE_CHANGED  時區改變    
  45. ACTION_BOOT_COMPLETED  系統啓動完畢    
  46. ACTION_PACKAGE_ADDED  新的應用程序apk包安裝完畢    
  47. ACTION_PACKAGE_CHANGED  現有應用程序apk包改變    
  48. ACTION_PACKAGE_REMOVED  現有應用程序apk包被刪除    
  49. ACTION_UID_REMOVED  用戶id被刪除       
  50.   
  51.   
  52. Intent的Action和Data屬性匹配    
  53. Action屬性  Data屬性  說明    
  54. ACTION_VIEW  content://contacts/people/1  顯示id爲1的聯繫人信息    
  55. ACTION_DIAL  content://contacts/people/1  將id爲1的聯繫人電話號碼顯示在撥號界面中    
  56. ACITON_VIEW  tel:123  顯示電話爲123的聯繫人信息    
  57. ACTION_VIEW  http://www.google.com  在瀏覽器中瀏覽該網站    
  58. ACTION_VIEW  file://sdcard/mymusic.mp3  播放MP3    
  59. ACTION_VIEW  geo:39.2456,116.3523  顯示地圖  
  60.    
  61.   
  62. 常見的Category常量  
  63. Category字符串常量  描述  
  64. CATEGORY_BROWSABLE  目標Activity能通過在網頁瀏覽器中點擊鏈接而激活(比如,點擊瀏覽器中的圖片鏈接)    
  65. CATEGORY_GADGET  表示目標Activity可以被內嵌到其他Activity當中    
  66. CATEGORY_HOME  目標Activity是HOME Activity,即手機開機啓動後顯示的Activity,或按下HOME鍵後顯示的Activity    
  67. CATEGORY_LAUNCHER  表示目標Activity是應用程序中最優先被執行的Activity    
  68. CATEGORY_PREFERENCE  表示目標Activity是一個偏愛設置的Activity  
  69.   
  70.   
  71. 常見的Extra常量  
  72. Extra鍵值字符串常量  描述  
  73. EXTRA_BCC  裝有郵件密送地址的字符串數組    
  74. EXTRA_CC  裝有郵件抄送地址的字符串數組    
  75. EXTRA_EMAIL  裝有郵件發送地址的字符串數組    
  76. EXTRA_INTENT  使用ACTION_PICK_ACTIVITY動作時裝有Intent選項的鍵    
  77. EXTRA_KEY_EVENT  觸發該Intent的案件的KeyEvent對象    
  78. EXTRA_PHONE_NUMBER  使用撥打電話相關的Action時,電話號碼字符串的鍵,類型爲String    
  79. EXTRA_SHORTCUT_ICON  使用ACTION_CREATE_SHORTCUT在HomeActivity創建快捷方式時,對快捷方式的描述信息。  
  80. 其中ICON和ICON_RESOURCE描述的是快捷方式的圖標,類型分別爲Bitmap和ShortcutIconResource。INTENT描述的是快捷方式相對應的Intent對象。NAME描述的是快捷方式的名字。    
  81. EXTRA_SHORTCUT_ICON_RESOURCE  EXTRA_SHORTCUT_INTENT  EXTRA_SHORTCUT_NAME  EXTRA_SUBJECT  描述信息主題的鍵    
  82. EXTRA_TEXT  使用ACTION_SEND動作時,用來描述要發送的文本信息,類型爲CharSequence    
  83. EXTRA_TITLE  使用ACTION_CHOOSER動作時,描述對話框標題的鍵,類型爲CharSequence    
  84. EXTRA_UID  使用ACTION_UID_REMOVED動作時,描述刪除的用戶id的鍵,類型爲int      
  85.   
  86.   
  87. Android.telephony包中的類    
  88. 類名  描述    
  89. CellLocation  表示設備位置的抽象類    
  90. PhoneNumberFormattingTextWather  監視一個TextView控件,如果有電話號碼輸入,則用formatNumber()方法處理電話號碼    
  91. PhoneNumberUtils  包含各種處理電話號碼字符串的使用工具    
  92. PhoneStateListener  監視手機中電話狀態變化的監聽類    
  93. ServiceState  包含電話狀態和相關的服務信息    
  94. TelephonyManager  提供對手機中電話服務信息的訪問  
  95.   
  96.    
  97. 與短信服務相關的類主要在包android.telephony.gsm中  
  98. 類名  描述  
  99. GsmCellLocation  表示GSM手機的基站位置    
  100. SmsManager  管理各種短信操作    
  101. SmsMessage  表示具體的短信    
  102.   
  103.   
  104. 1.Intent的用法:  
  105. (1)用Action跳轉  
  106. 1、使用Action跳轉,如果有一個程序的AndroidManifest.xml中的某一個 Activity的IntentFilter段中 定義了包含了相同的Action那麼這個Intent就與這個目標Action匹配。如果這個IntentFilter段中沒有定義 Type,Category,那麼這個 Activity就匹配了。但是如果手機中有兩個以上的程序匹配,那麼就會彈出一個對話可框來提示說明。   
  107. Action 的值在Android中有很多預定義,如果你想直接轉到你自己定義的Intent接收者,你可以在接收者的IntentFilter 中加入一個自定義的Action值(同時要設定 Category值爲"android.intent.category.DEFAULT"),在你的Intent中設定該值爲Intent的 Action,就直接能跳轉到你自己的Intent接收者中。因爲這個Action在系統中是唯一的。  
  108. 2,data/type,你可以用Uri 來做爲data,比如Uri uri = Uri.parse(http://www.google.com);  
  109. Intent i = new Intent(Intent.ACTION_VIEW,uri);手機的Intent分發過程中,會根據http://www.google.com 的scheme判斷出數據類型type 。手機的Brower則能匹配它,在Brower的Manifest.xml中的IntenFilter中 首先有ACTION_VIEW Action,也能處理http:的type,  
  110. 3, 至於分類Category,一般不要去在Intent中設置它,如果你寫Intent的接收者,就在Manifest.xml的Activity的 IntentFilter中包含android.category.DEFAULT,這樣所有不設置 Category(Intent.addCategory(String c);)的Intent都會與這個Category匹配。  
  111. 4,extras(附 加信息),是其它所有附加信息的集合。使用extras可以爲組件提供擴展信息,比如,如果要執行“發送電子郵件”這個動 作,可以將電子郵件的標題、正文等保存在extras裏,傳給電子郵件發送組件。  
  112. 2)用類名跳轉  
  113.     Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描 述,Android則根據此Intent的描述, 負責找到對應的組件,將 Intent傳遞給調用的組件,並完成組件的調用。Intent在這裏起着實現調用者與被調用者之間的解耦作用。Intent傳遞過程中,要找 到目標消費者(另一個Activity,IntentReceiver或Service),也就是Intent的響 應者。  
  114. Intent intent = new Intent();  
  115. intent.setClass(context, targetActivy.class);  
  116. //或者直接用 Intent intent = new Intent(context, targetActivity.class);  
  117.   
  118. startActivity(intent);  
  119. 不過注意用類名跳轉,需要在AndroidManifest.xml中申明activity    
  120. <activity android:name="targetActivity"></activity>  
  121. 2.幾種Intent的用法  
  122. android 中intent是經常要用到的。不管是頁面牽轉,還是傳遞數據,或是調用外部程序,系統功能都要用到intent。在做了一些intent的例子之後,整理了一下intent,希望對大家有用。由於intent內容太多,不可能真的寫全,難免會有遺落,以後我會隨時更新。如果你們有疑問或新的intent內容,希望交流。   
  123. ★intent大全:   
  124. 1.從google搜索內容   
  125. Intent intent = new Intent();   
  126. intent.setAction(Intent.ACTION_WEB_SEARCH);   
  127. intent.putExtra(SearchManager.QUERY,"searchString")   
  128. startActivity(intent);   
  129.   
  130. 2.瀏覽網頁   
  131. Uri uri = Uri.parse("http://www.google.com");   
  132. Intent it  = new Intent(Intent.ACTION_VIEW,uri);   
  133. startActivity(it);   
  134.   
  135. 3.顯示地圖   
  136. Uri uri = Uri.parse("geo:38.899533,-77.036476");   
  137. Intent it = new Intent(Intent.Action_VIEW,uri);   
  138. startActivity(it);   
  139.   
  140. 4.路徑規劃   
  141. Uri uri = Uri.parse("http://maps.google.com/maps?f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");   
  142. Intent it = new Intent(Intent.ACTION_VIEW,URI);   
  143. startActivity(it);   
  144.   
  145. 5.撥打電話   
  146. Uri uri = Uri.parse("tel:xxxxxx");   
  147. Intent it = new Intent(Intent.ACTION_DIAL, uri);     
  148. startActivity(it);   
  149.   
  150. 6.調用發短信的程序   
  151. Intent it = new Intent(Intent.ACTION_VIEW);      
  152. it.putExtra("sms_body""The SMS text");      
  153. it.setType("vnd.android-dir/mms-sms");      
  154. startActivity(it);   
  155.   
  156. 7.發送短信   
  157. Uri uri = Uri.parse("smsto:0800000123");      
  158. Intent it = new Intent(Intent.ACTION_SENDTO, uri);      
  159. it.putExtra("sms_body""The SMS text");      
  160. startActivity(it);   
  161. String body="this is sms demo";   
  162. Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", number, null));   
  163. mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);   
  164. mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);   
  165. mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);   
  166. startActivity(mmsintent);   
  167.   
  168. 8.發送彩信   
  169. Uri uri = Uri.parse("content://media/external/images/media/23");      
  170. Intent it = new Intent(Intent.ACTION_SEND);      
  171. it.putExtra("sms_body""some text");      
  172. it.putExtra(Intent.EXTRA_STREAM, uri);      
  173. it.setType("image/png");      
  174. startActivity(it);   
  175. StringBuilder sb = new StringBuilder();   
  176. sb.append("file://");   
  177. sb.append(fd.getAbsoluteFile());   
  178. Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto", number, null));   
  179. // Below extra datas are all optional.   
  180. intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);   
  181. intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);   
  182. intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());   
  183. intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);   
  184. intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);   
  185. startActivity(intent);   
  186.   
  187. 9.發送Email   
  188. Uri uri = Uri.parse("mailto:[email protected]");   
  189. Intent it = new Intent(Intent.ACTION_SENDTO, uri);   
  190. startActivity(it);   
  191. Intent it = new Intent(Intent.ACTION_SEND);      
  192. it.putExtra(Intent.EXTRA_EMAIL, "[email protected]");      
  193. it.putExtra(Intent.EXTRA_TEXT, "The email body text");      
  194. it.setType("text/plain");      
  195. startActivity(Intent.createChooser(it, "Choose Email Client"));   
  196. Intent it=new Intent(Intent.ACTION_SEND);        
  197. String[] tos={"[email protected]"};        
  198. String[] ccs={"[email protected]"};        
  199. it.putExtra(Intent.EXTRA_EMAIL, tos);        
  200. it.putExtra(Intent.EXTRA_CC, ccs);        
  201. it.putExtra(Intent.EXTRA_TEXT, "The email body text");        
  202. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");        
  203. it.setType("message/rfc822");        
  204. startActivity(Intent.createChooser(it, "Choose Email Client"));      
  205.   
  206. Intent it = new Intent(Intent.ACTION_SEND);      
  207. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");      
  208. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");      
  209. sendIntent.setType("audio/mp3");      
  210. startActivity(Intent.createChooser(it, "Choose Email Client"));   
  211.   
  212. 10.播放多媒體     
  213. Intent it = new Intent(Intent.ACTION_VIEW);   
  214. Uri uri = Uri.parse("file:///sdcard/song.mp3");   
  215. it.setDataAndType(uri, "audio/mp3");   
  216. startActivity(it);   
  217. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");      
  218. Intent it = new Intent(Intent.ACTION_VIEW, uri);      
  219. startActivity(it);   
  220.   
  221. 11.uninstall apk   
  222. Uri uri = Uri.fromParts("package", strPackageName, null);      
  223. Intent it = new Intent(Intent.ACTION_DELETE, uri);      
  224. startActivity(it);   
  225.   
  226. 12.install apk   
  227. Uri installUri = Uri.fromParts("package""xxx"null);   
  228. returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);   
  229.   
  230. 13. 打開照相機   
  231. <1>Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null);   
  232.     this.sendBroadcast(i);   
  233. <2>long dateTaken = System.currentTimeMillis();   
  234.     String name = createName(dateTaken) + ".jpg";   
  235.     fileName = folder + name;   
  236.     ContentValues values = new ContentValues();   
  237.     values.put(Images.Media.TITLE, fileName);   
  238.     values.put("_data", fileName);   
  239.     values.put(Images.Media.PICASA_ID, fileName);   
  240.     values.put(Images.Media.DISPLAY_NAME, fileName);   
  241.     values.put(Images.Media.DESCRIPTION, fileName);   
  242.     values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileName);   
  243.     Uri photoUri = getContentResolver().insert(   
  244.             MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);   
  245.        
  246.     Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);   
  247.     inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);   
  248.     startActivityForResult(inttPhoto, 10);   
  249.   
  250. 14.從gallery選取圖片   
  251. Intent i = new Intent();   
  252. i.setType("image/*");   
  253. i.setAction(Intent.ACTION_GET_CONTENT);   
  254. startActivityForResult(i, 11);   
  255.   
  256. 15. 打開錄音機   
  257. Intent mi = new Intent(Media.RECORD_SOUND_ACTION);   
  258. startActivity(mi);   
  259.   
  260. 16.顯示應用詳細列表         
  261. Uri uri = Uri.parse("market://details?id=app_id");           
  262. Intent it = new Intent(Intent.ACTION_VIEW, uri);           
  263. startActivity(it);           
  264. //where app_id is the application ID, find the ID            
  265. //by clicking on your application on Market home            
  266. //page, and notice the ID from the address bar        
  267.   
  268. 剛纔找app id未果,結果發現用package name也可以   
  269. Uri uri = Uri.parse("market://details?id=<packagename>");   
  270. 這個簡單多了   
  271.   
  272. 17尋找應用         
  273. Uri uri = Uri.parse("market://search?q=pname:pkg_name");           
  274. Intent it = new Intent(Intent.ACTION_VIEW, uri);           
  275. startActivity(it);   
  276. //where pkg_name is the full package path for an application         
  277.   
  278. 18打開聯繫人列表   
  279.     <1>              
  280.     Intent i = new Intent();   
  281.     i.setAction(Intent.ACTION_GET_CONTENT);   
  282.     i.setType("vnd.android.cursor.item/phone");   
  283.     startActivityForResult(i, REQUEST_TEXT);   
  284.   
  285.     <2>   
  286.     Uri uri = Uri.parse("content://contacts/people");   
  287.     Intent it = new Intent(Intent.ACTION_PICK, uri);   
  288.     startActivityForResult(it, REQUEST_TEXT);   
  289.   
  290. 19 打開另一程序   
  291. Intent i = new Intent();   
  292. ComponentName cn = new ComponentName("com.yellowbook.android2",   
  293.         "com.yellowbook.android2.AndroidSearch");   
  294. i.setComponent(cn);   
  295. i.setAction("android.intent.action.MAIN");   
  296. startActivityForResult(i, RESULT_OK);   
  297.   
  298. 20.調用系統編輯添加聯繫人(高版本SDK有效):  
  299. Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT);  
  300. it.setType("vnd.android.cursor.item/contact");  
  301. //it.setType(Contacts.CONTENT_ITEM_TYPE);  
  302. it.putExtra("name","myName");  
  303. it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY,  "organization");  
  304. it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL,"email");  
  305. it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone");  
  306. it.putExtra(android.provider.Contacts.Intents.Insert.SECONDARY_PHONE,  
  307.                "mobilePhone");  
  308. it.putExtra(  android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,  
  309.                "workPhone");  
  310. it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title");  
  311. startActivity(it);  
  312.    
  313. 21.調用系統編輯添加聯繫人(全有效):  
  314. Intent intent = newIntent(Intent.ACTION_INSERT_OR_EDIT);  
  315. intent.setType(People.CONTENT_ITEM_TYPE);  
  316. intent.putExtra(Contacts.Intents.Insert.NAME, "My Name");  
  317. intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");  
  318. intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE,Contacts.PhonesColumns.TYPE_MOBILE);  
  319. intent.putExtra(Contacts.Intents.Insert.EMAIL, "[email protected]");  
  320. intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE,                    Contacts.ContactMethodsColumns.TYPE_WORK);  
  321. startActivity(intent);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章