用Intent 啟動手機內的應用程式 靜宜大學資管系 楊子青
專案:IntentApp (選擇Basic Activity)
1. 設計Menu
menu_main.xml
修改menu_main.xml <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/web" android:title="靜宜大學首頁"></item> <item android:id="@+id/tel" android:title="打電話給子青老師"></item> <item android:id="@+id/email" android:title="寄信給子青老師"></item> <item android:id="@+id/search" android:title="搜尋楊子青"></item> <item android:id="@+id/map" android:title="根據靜宜大學GPS座標,顯示地圖"></item> </menu>
2. Implicit (暗示) Intents
使用Intent啟動程式 setAction():The general action to be performed setData():The data to operate on, expressed as a Uri.
3.開啟瀏覽器 public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); Intent it = new Intent(); Uri u; switch (id){ case R.id.web: it.setAction(Intent.ACTION_VIEW); u = Uri.parse("http://www.pu.edu.tw"); it.setData(u); startActivity(it); break; } return super.onOptionsItemSelected(item);
4.撥電話 case R.id.tel: it.setAction(Intent.ACTION_VIEW); it.setAction(Intent.ACTION_DIAL); 效果相同 case R.id.tel: it.setAction(Intent.ACTION_VIEW); u = Uri.parse("tel:0426328001,18110"); it.setData(u); startActivity(it); break; 打電話到子青老師研究室
直接撥出電話,不停在電話簿 case R.id.tel: it.setAction(Intent.ACTION_CALL); u = Uri.parse("tel:0426328001,18110"); it.setData(u); startActivity(it); break; 撥打電話屬於手機底層的服務,牽涉使用者隱私及通話費用, 必須取得相關權限,因此需於AndroidManifest.xml設定: <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
5.寄發電子郵件 case R.id.email: it.setAction(Intent.ACTION_VIEW); u = Uri.parse("mailto:tcyang@pu.edu.tw"); it.setData(u); startActivity(it); break;
電子郵件格式
利用putExtra傳遞相關參數
加入副本、信件標題及內容 case R.id.email: it.setAction(Intent.ACTION_VIEW); u = Uri.parse("mailto:tcyang@pu.edu.tw"); it.setData(u); it.putExtra(Intent.EXTRA_CC, new String[] {"tcyang@gm.pu.edu.tw"}); it.putExtra(Intent.EXTRA_SUBJECT, "行動應用軟體開發課程"); it.putExtra(Intent.EXTRA_TEXT, "我是修您課程的學生\n詢問App期末專案,Thanks!"); startActivity(it); break;
6.搜尋Web資料 case R.id.search: it.setAction(Intent.ACTION_WEB_SEARCH); it.putExtra(SearchManager.QUERY, "楊子青"); startActivity(it); break;
7.利用經緯度查地圖 先到GoogleMap,輸入關鍵字(例如:靜宜大學),查詢經緯度
利用經緯度查地圖 case R.id.map: it.setAction(Intent.ACTION_VIEW); u = Uri.parse("geo:24.2267756,120.5771591"); it.setData(u); startActivity(it); break;
Google Map其他常用查詢 查詢靜宜附近店家,例如餐廳: 用地址查詢,例如: 用地名查詢,例如「高美濕地」: u = Uri.parse("geo:24.2267756,120.5771591?q=restaurants"); 還可輸入如:書店, 便利商店,電影院, 加油站,公車站… 用地址查詢,例如: u = Uri.parse("geo:0,0?q=台中市沙鹿區台灣大道200號"); 用地名查詢,例如「高美濕地」: u = Uri.parse("geo:0,0?q=高美濕地"); 從目前位置導航至某地,例如要到「靜宜大學」 u = Uri.parse("google.navigation:q=靜宜大學"); 步行:&mode=w 開車:&mode=d