Intent做爲聯繫各Activity之間的紐帶,其做用並不單單隻限於簡單的數據傳遞。經過其自帶的屬性,其實能夠方便的完成不少較爲複雜的操做。例如直接調用撥號功能、直接自動調用合適的程序打開不一樣類型的文件等等。諸如此類,均可以經過設置Intent屬性來完成。html
Intent主要有如下四個重要屬性,它們分別爲:android
Action:Action屬性的值爲一個字符串,它表明了系統中已經定義了一系列經常使用的動做。經過setAction()方法或在清單文件AndroidManifest.xml中設置。默認爲:DEFAULT。git
Data:Data一般是URI格式定義的操做數據。例如:tel:// 。經過setData()方法設置。web
Category:Category屬性用於指定當前動做(Action)被執行的環境。經過addCategory()方法或在清單文件AndroidManifest.xml中設置。默認爲:CATEGORY_DEFAULT。數組
Extras:Extras屬性主要用於傳遞目標組件所須要的額外的數據。經過putExtras()方法設置。瀏覽器
四個屬性各自的經常使用值以下所示:app
Action:post
ACTION_MAIN:Android Application的入口,每一個Android應用必須且只能包含一個此類型的Action聲明。 url
ACTION_VIEW:系統根據不一樣的Data類型,經過已註冊的對應Application顯示數據。spa
ACTION_EDIT:系統根據不一樣的Data類型,經過已註冊的對應Application編輯示數據。
ACTION_DIAL:打開系統默認的撥號程序,若是Data中設置了電話號碼,則自動在撥號程序中輸入此號碼。
ACTION_CALL:直接呼叫Data中所帶的號碼。
ACTION_ANSWER:接聽來電。
ACTION_SEND:由用戶指定發送方式進行數據發送操做。
ACTION_SENDTO:系統根據不一樣的Data類型,經過已註冊的對應Application進行數據發送操做。
ACTION_BOOT_COMPLETED:Android系統在啓動完畢後發出帶有此Action的廣播(Broadcast)。
ACTION_TIME_CHANGED:Android系統的時間發生改變後發出帶有此Action的廣播(Broadcast)。
ACTION_PACKAGE_ADDED:Android系統安裝了新的Application以後發出帶有此Action的廣播(Broadcast)。
ACTION_PACKAGE_CHANGED:Android系統中已存在的Application發生改變以後(如應用更新操做)發出帶有此Action的廣播(Broadcast)。
ACTION_PACKAGE_REMOVED:卸載了Android系統已存在的Application以後發出帶有此Action的廣播(Broadcast)。
Category:
CATEGORY_DEFAULT:Android系統中默認的執行方式,按照普通Activity的執行方式執行。
CATEGORY_HOME:設置該組件爲Home Activity。
CATEGORY_PREFERENCE:設置該組件爲Preference。
CATEGORY_LAUNCHER:設置該組件爲在當前應用程序啓動器中優先級最高的Activity,一般爲入口ACTION_MAIN配合使用。
CATEGORY_BROWSABLE:設置該組件可使用瀏覽器啓動。
CATEGORY_GADGET:設置該組件能夠內嵌到另外的Activity中。
Extras:
EXTRA_BCC:存放郵件密送人地址的字符串數組。
EXTRA_CC:存放郵件抄送人地址的字符串數組。
EXTRA_EMAIL:存放郵件地址的字符串數組。
EXTRA_SUBJECT:存放郵件主題字符串。
EXTRA_TEXT:存放郵件內容。
EXTRA_KEY_EVENT:以KeyEvent對象方式存放觸發Intent的按鍵。
EXTRA_PHONE_NUMBER:存放調用ACTION_CALL時的電話號碼。
Data:
tel://:號碼數據格式,後跟電話號碼。
mailto://:郵件數據格式,後跟郵件收件人地址。
smsto://:短息數據格式,後跟短信接收號碼。
content://:內容數據格式,後跟須要讀取的內容。
file://:文件數據格式,後跟文件路徑。
market://search?q=pname:pkgname:市場數據格式,在Google Market裏搜索包名爲pkgname的應用。
geo://latitude, longitude:經緯數據格式,在地圖上顯示經緯度所指定的位置。
常見系統調用以下:
// 調用瀏覽器
Uri webViewUri = Uri.parse("http://blog.csdn.net/zuolongsnail");
Intent intent = new Intent(Intent.ACTION_VIEW, webViewUri);
// 調用地圖
Uri mapUri = Uri.parse("geo:100,100");
Intent intent = new Intent(Intent.ACTION_VIEW, mapUri);
// 播放mp3
Uri playUri = Uri.parse("file:///sdcard/test.mp3");
Intent intent = new Intent(Intent.ACTION_VIEW, playUri);
intent.setDataAndType(playUri, "audio/mp3");
// 調用撥打電話
Uri dialUri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, dialUri);
// 直接撥打電話,須要加上權限<uses-permission id="android.permission.CALL_PHONE" />
Uri callUri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_CALL, callUri);
// 調用發郵件(這裏要事先配置好的系統Email,不然是調不出發郵件界面的)
Uri emailUri = Uri.parse("mailto:zuolongsnail@163.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);
// 直接發郵件
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "zuolongsnail@gmail.com" };
String[] ccs = { "zuolongsnail@163.com" };
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_TEXT, "the email text");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.setType("text/plain");
Intent.createChooser(intent, "Choose Email Client");
// 發短信
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("sms_body", "the sms text");
intent.setType("vnd.android-dir/mms-sms");
// 直接發短信
Uri smsToUri = Uri.parse("smsto:10086");
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
intent.putExtra("sms_body", "the sms text");
// 發彩信
Uri mmsUri = Uri.parse("content://media/external/images/media/23");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "the sms text");
intent.putExtra(Intent.EXTRA_STREAM, mmsUri);
intent.setType("image/png");
// 卸載應用
Uri uninstallUri = Uri.fromParts("package", "com.app.test", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri);
// 安裝應用
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("/sdcard/test.apk"), "application/vnd.android.package-archive");
// 在Android Market中查找應用Uri uri = Uri.parse("market://search?q=憤怒的小鳥"); Intent intent = new Intent(Intent.ACTION_VIEW, uri);