1 / 68

Android Intent

Android Intent. 建國科技大學 資管系 饒瑞佶 2011/1. Android Intent (I). Android 的事件處理機制稱為「 Intent 」 Intent 的作用與事件 (event) 很像,但與傳統的事件處理仍然有些差異 傳統的事件 處理,講求的是「處理者( handler )的觸發」,當一事件發生時,便 callback 事件的處理者,或是直接將該事件 forward 給應用程式,由應用程式處理

zocha
Download Presentation

Android Intent

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AndroidIntent 建國科技大學 資管系 饒瑞佶 2011/1

  2. AndroidIntent(I) • Android的事件處理機制稱為「Intent」 • Intent 的作用與事件(event)很像,但與傳統的事件處理仍然有些差異 • 傳統的事件處理,講求的是「處理者(handler)的觸發」,當一事件發生時,便callback事件的處理者,或是直接將該事件forward給應用程式,由應用程式處理 • 在Intent裡,Android 將事件看成「應用程式的意圖」或「使用者的意圖」,並去解釋該意圖的目的,若 Android 系統本身能理解應用程式的意圖,便會「自行」去處理該意圖所應執行的工作

  3. AndroidIntent (II) • Android的做法是讓每個Intent都帶有一個action,並根據不同的action去進行需要的處理 • Android內部有許多內建的action,例如「ACTION_VIEW」,用來「檢視」(view)一個「URI」資料,當Android看到「ACTION_VIEW」時,便「自行」依據資料(data)處理(action)該Intent,處理的方式隨data不同而不同 • Intent intent=new Intent(action,data) • data範例 • http://  開啟瀏覽器 • geo: 開啟Google Maps • tel:  撥電話

  4. AndroidIntent (III) • Android內建的Intent action分為二種: • Activity Action: 啟動Activity的action • Broadcast Action: 透過廣撥器處理的action • 另外,可自行定義一個Intent,設定可接收此Intent的Service(這就是Action),並透過「送出Intent」的方式,請Android啟動該Service • 除了action外,Intent還包含「data」 • Intent的action指定這個Intent的「動作」是什麼,Android會依指定的動作進行處理;但有些action可以附帶資料(data),這個資料是以URI的格式撰寫

  5. ACTION_VIEW

  6. 範例一、內建的動作“ACTION_VIEW” • 使用內建的動作“ACTION_VIEW” 做一個「啟動瀏覽器上網」的應用程式 • 可以在 Android 應用程式裡顯示自已的 HTML 文件,或是線上的網頁 • data格式 • http://網址

  7. 不用“ACTION_VIEW” • 建立新專案: HelloWeb

  8. 不用“ACTION_VIEW” loadData() 的參數如下: 第一個參數:HTML 內容 第二個參數:MimeType類型,指定為 text/html,即 HTML 類型文件 第三個參數:文字編碼方法,指定為 utf-8(Unicode) • HelloWeb.java 程式 使用HTML標籤當參數

  9. 不用“ACTION_VIEW” • main.xml

  10. 不用“ACTION_VIEW”

  11. 不用“ACTION_VIEW” loadData() 的參數如下: 第一個參數:HTML 內容 第二個參數:MimeType類型,指定為 text/html,即 HTML 類型文件 第三個參數:文字編碼方法,指定為 utf-8(Unicode) • HelloWeb.java 程式 使用網址當參數

  12. 不用“ACTION_VIEW”

  13. 不用“ACTION_VIEW” • androidmanifest.xml裡,需要加入 android.permission.INTERNET android.permission.ACCESS_NETWORK_STATE 的權限才能上

  14. 不用“ACTION_VIEW” • 如果使用emulator還是不能上網,可能是DNS問題,請 • 執行:adb shell • 輸入:getprop • 輸入:setprop net.dns1 168.95.1.1 這是目前DNS設定 請改成一個可以用的 例如中華電信168.95.1.1

  15. 使用內建的動作“ACTION_VIEW” • 改用ACTION_VIEW data action

  16. 使用內建的動作“ACTION_VIEW”

  17. 範例二、利用Intent 玩Google Maps • 建立新專案: HelloMaps 沒有Google APIs target

  18. 範例二、利用Intent 玩Google Maps • 如果沒有Google APIs target • 請選擇Available packages進行安裝

  19. 範例二、利用Intent 玩Google Maps • 安裝完Google APIs target畫面

  20. 範例二、利用Intent 玩Google Maps • 建立新專案: IntentMaps

  21. 顯示Google Maps地圖 都是ACTION_VIEW,但資料格式不同

  22. 範例二、利用Intent 玩Google Maps • AVD也要對應具備Google APIs功能

  23. 範例二、利用Intent 玩Google Maps • 增加 <uses-permission android:name="android.permission.INTERNET" />

  24. 範例二、利用Intent 玩Google Maps

  25. 範例二、利用Intent 玩Google Maps • Google MapsURI 格式:geo:latitude,longitudegeo:latitude,longitude?z=zoomgeo:0,0?q=my+street+addressgeo:0,0?q=business+near+city • Google StreetviewURI 格式:google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom

  26. 範例二、利用Intent 玩Google Maps • 顯示地圖Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); • 路徑規劃Uri uri = Uri.parse("http://maps.google.com/maps? f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456

  27. ACTION_CALL

  28. 範例二、HelloIntentDialer • 啟動撥號器(dialer)並撥號 • action: ACTION_CALL • 執行步驟: 1. 先產生一個Intent物件: Intent dial = new Intent(); 2. 設定Intent的action為「android.intent.action.CALL」,這是一個內建的action: dial.setAction("android.intent.action.CALL"); 內建action「CALL」需要附帶一筆資料,而資料的寫法是使用URI格式: dial.setData(Uri.parse("tel:119")); 4. 「CALL」是一個activity action,所以呼叫startActivity()向Intent送給框架: startActivity(dial);

  29. 範例二、HelloIntentDialer • HelloIntentDialer.java的完整程式 http://www.jollen.org/blog/2009/08/jollen-android-programming-27.html

  30. 範例二、HelloIntentDialer • 因為permission的關係,所以也要在AndroidManifest.xml裡加上「CALL_PHONE」的權限。AndroidManifest.xml的完整內容如下

  31. ??HelloIntentMusic • 使用者按下「Select Music」後,可以由音樂清單裡選擇音樂並撥放 • action: ACTION_GET_CONTENT http://blogold.chinaunix.net/u1/44301/showart_2360056.html

  32. 利用Intent切換Activity獨立的Activity

  33. 切換Activity • 使用Eclipse建立新專案 • Project Name=Jao • Application Name=MyButton • Package Name=com.android.jao • Create Activity=Jao

  34. main.xml

  35. Close application按鈕程式 1 main.xml中的android:id屬性 2 3

  36. 切換Activity • 建立對應的新畫面sample_page.xml • res/layout/sample_page.xml • 建立對應的程式sample_page.java • src/com.example.android.button/ sample_page.java • 在AndroidManiFest.xml中加入Activity

  37. 切換Activity • 建立對應的畫面sample_page.xml 2 1

  38. 按鈕元件切換Activity • 建立對應的畫面sample_page.xml 複製main.xml的結構

  39. 按鈕元件切換Activity • 建立對應的畫面sample_page.xml

  40. 按鈕元件切換Activity • 建立對應的程式sample_page.java

  41. 按鈕元件切換Activity • 建立對應的程式sample_page.java 1 2

  42. 按鈕元件切換Activity • 建立對應的程式sample_page.java 輸入activity 3 4

  43. 按鈕元件切換Activity • 建立對應的程式sample_page.java 5

  44. 按鈕元件切換Activity • 建立對應的程式sample_page.java 出現基本結構 複製HelloBMI.java內的程式 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.Sample_page); } 這裡要改

  45. 按鈕元件切換Activity • 建立對應的程式sample_page.java 1 2 3 4

  46. 按鈕元件切換Activity • 建立對應的程式sample_page.java

  47. 按鈕元件切換Activity • 加入從Jao.java呼叫sample_page.java • 先在main.xml加入一個按鈕

  48. 按鈕元件切換Activity • 在Jao.java加入呼叫按鈕與程式

  49. 按鈕元件切換Activity • 在AndroidManifest.xml中加入Activity 1

  50. 按鈕元件切換Activity • 在AndroidManifest.xml中加入Activity 2

More Related