Activity 生命週期 顯式 Intent 調用 1 //建立一個顯式的 Intent 對象(方法一:在建構函式中指定) 2 Intent intent = new Intent(Intent_Demo1.this, Intent_Demo1_Result1.class); 3 4 Bundle bundle = new Bundle(); 5 bundle.putString("id", strID); 6 intent.putExtras(bundle); 7 8 intent.putExtra("name", "bbb"); 9 intent.putExtra("userInfo", new UserInfo(1, "name"));10 startActivity(intent);11 12 //建立一個顯式的 Intent 對象(方法二:用 setClass 方法)13 Intent intent = new Intent();14 Bundle bundle = new Bundle();15 bundle.putString("id", strID);16 intent.setClass(Intent_Demo1.this, Intent_Demo1_Result1.class);17 intent.putExtras(bundle);18 startActivity(intent);19 20 //建立一個顯式的 Intent 對象(方法三:用 setClass 方法)21 Intent intent = new Intent();22 Bundle bundle = new Bundle();23 bundle.putString("id", strID);24 intent.setClassName(Intent_Demo1.this, "com.great.activity_intent.Intent_Demo1_Result1");25 intent.putExtras(bundle);26 startActivity(intent);27 28 //建立一個顯式的 Intent 對象(方法四:用 setComponent 方法)29 Intent intent = new Intent();30 Bundle bundle = new Bundle();31 bundle.putString("id", strID);32 //setComponent方法的參數:ComponentName33 intent.setComponent(new ComponentName(Intent_Demo1.this, Intent_Demo1_Result1.class));34 intent.putExtras(bundle);35 startActivity(intent); Intent隱式跳轉 Action 1 //建立一個隱式的 Intent 對象:Action 動作 2 /** 3 * 這裡指定的是 AndroidManifest.xml 檔案中配置的 4 * <intent-filter>標籤中的<action android:name="com.great.activity_intent.Intent_Demo1_Result3" /> 5 * 所在的 Activity,注意這裡都要設定 <category android:name="android.intent.category.DEFAULT" /> 6 */ 7 Intent intent = new Intent(); 8 //設定 Intent 的動作 9 intent.setAction("com.great.activity_intent.Intent_Demo1_Result3");10 Bundle bundle = new Bundle();11 bundle.putString("id", strID);12 intent.putExtras(bundle);13 startActivity(intent); AndroidManifest.xml 1 <activity android:name="Intent_Demo1_Result3"2 android:label="Intent_Demo1_Result3">3 <intent-filter>4 <action android:name="com.great.activity_intent.Intent_Demo1_Result3" />5 <category android:name="android.intent.category.DEFAULT" />6 </intent-filter>7 </activity> Category 類別 1 //建立一個隱式的 Intent 對象:Category 類別 2 Intent intent = new Intent(); 3 intent.setAction("com.great.activity_intent.Intent_Demo1_Result33"); 4 /** 5 * 不指定 Category 或 只指定 AndroidManifest.xml 檔案中 <intent-filter> 標籤中配置的任意一個 Category 6 * <category android:name="android.intent.category.DEFAULT" /> 除外,就可以訪問該 Activity, 7 */ 8 intent.addCategory(Intent.CATEGORY_INFO); 9 intent.addCategory(Intent.CATEGORY_DEFAULT);10 Bundle bundle = new Bundle();11 bundle.putString("id", strID);12 intent.putExtras(bundle);13 startActivity(intent); AndroidManifest.xml <activity android:name="Intent_Demo1_Result2" android:label="Intent_Demo1_Result2"> <intent-filter> <category android:name="android.intent.category.INFO" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> Date 資料 跳轉 1 //建立一個隱式的 Intent 對象,方法四:Date 資料 2 Intent intent = new Intent(); 3 Uri uri = Uri.parse("http://www.great.org:8080/folder/subfolder/etc/abc.pdf"); 4 5 //註:setData、setDataAndType、setType 這三種方法只能單獨使用,不可共用 6 //要麼單獨以 setData 方法設定 URI 7 //intent.setData(uri); 8 //要麼單獨以 setDataAndType 方法設定 URI 及 mime type 9 intent.setDataAndType(uri, "text/plain");10 //要麼單獨以 setDataAndType 方法設定 Type11 //intent.setType("text/plain");12 13 /**14 * 不指定 Category 或 只指定 AndroidManifest.xml 檔案中 <intent-filter> 標籤中配置的任意一個 Category15 * <category android:name="android.intent.category.DEFAULT" /> 除外,就可以訪問該 Activity16 */17 Bundle bundle = new Bundle();18 bundle.putString("id", strID);19 intent.putExtras(bundle);20 startActivity(intent); AndroidManifest.xml 1 <activity android:name="Intent_Demo1_Result2" 2 android:label="Intent_Demo1_Result2"> 3 <intent-filter> 4 <category android:name="android.intent.category.DEFAULT" /> 5 <data 6 android:scheme="http" 7 android:host="www.great.org" 8 android:port="8080" 9 android:pathPattern=".*pdf"10 android:mimeType="text/plain"/>11 </intent-filter>12 </activity>13 調用系統的的組件 //web瀏覽器 Uri uri= Uri.parse("http://www.baidu.com:8080/image/a.jpg"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); //地圖(要在 Android 手機上才能測試) Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); //路徑規劃 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); //撥打到電話-調用撥號程式 Uri uri = Uri.parse("tel:15980665805"); Intent intent = new Intent(Intent.ACTION_DIAL, uri); startActivity(intent); //撥打到電話-直接撥打到電話 //要使用這個必須在設定檔中加入<uses-permission android:name="android.permission.CALL_PHONE"/> Uri uri = Uri.parse("tel:15980665805"); Intent intent = new Intent(Intent.ACTION_CALL, uri); startActivity(intent); //調用傳送簡訊程式(方法一) Uri uri = Uri.parse("smsto:15980665805"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "The SMS text"); startActivity(intent); //調用傳送簡訊程式(方法二) Intent intent = new Intent(Intent.ACTION_VIEW); intent.putExtra("sms_body", "The SMS text"); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent); //發送多媒體訊息 Uri uri = Uri.parse("content://media/external/images/media/23"); Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra("sms_body", "some text"); intent.putExtra(Intent.EXTRA_STREAM, uri); intent.setType("image/png"); startActivity(intent); //發送Email(方法一)(要在 Android 手機上才能測試) Uri uri = Uri.parse("mailto:zhangsan@gmail.com"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); startActivity(intent); //發送Email(方法二)(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:zhangsan@gmail.com")); intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題"); intent.putExtra(Intent.EXTRA_TEXT, "這是內容"); startActivity(intent); //發送Email(方法三)(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_EMAIL, "me@abc.com"); intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題"); intent.putExtra(Intent.EXTRA_TEXT, "這是內容"); intent.setType("text/plain"); //選擇一個郵件用戶端 startActivity(Intent.createChooser(intent, "Choose Email Client")); //發送Email(方法四)(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SEND); //收件者 String[] tos = {"to1@abc.com", "to2@abc.com"}; //抄送人 String[] ccs = {"cc1@abc.com", "cc2@abc.com"}; //密送人 String[] bcc = {"bcc1@abc.com", "bcc2@abc.com"}; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_BCC, bcc); intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題"); intent.putExtra(Intent.EXTRA_TEXT, "這是內容"); intent.setType("message/rfc822"); startActivity(Intent.createChooser(intent, "Choose Email Client")); //發送Email且發送附件(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mp3/醉紅顏.mp3"); intent.setType("audio/mp3"); startActivity(Intent.createChooser(intent, "Choose Email Client")); //播放媒體檔案(android 對中文名的檔案支援不好) Intent intent = new Intent(Intent.ACTION_VIEW); //Uri uri = Uri.parse("file:///sdcard/zhy.mp3"); Uri uri = Uri.parse("file:///sdcard/a.mp3"); intent.setDataAndType(uri, "audio/mp3"); startActivity(intent); Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); //音樂選取器 //它使用了Intent.ACTION_GET_CONTENT 和 MIME 類型來尋找支援 audio/* 的所有 Data Picker,允許使用者選擇其中之一 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); //Intent.createChooser:應用選取器,這個方法建立一個 ACTION_CHOOSER Intent startActivity(Intent.createChooser(intent, "選擇音樂")); Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT); intent1.setType("audio/*"); Intent intent2 = new Intent(Intent.ACTION_CHOOSER); intent2.putExtra(Intent.EXTRA_INTENT, intent1); intent2.putExtra(Intent.EXTRA_TITLE, "aaaa"); startActivity(intent2); // //設定壁紙// Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); // startActivity(Intent.createChooser(intent, "設定壁紙")); //卸載APK //fromParts方法 //參數1:URI 的 scheme //參數2:包路徑 //參數3: Uri uri = Uri.fromParts("package", "com.great.activity_intent", null); Intent intent = new Intent(Intent.ACTION_DELETE, uri); startActivity(intent); //安裝APK(???) Uri uri = Uri.fromParts("package", "com.great.activity_intent", null); Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri); startActivity(intent); //調用搜尋 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, "android"); startActivity(intent);