Android中的Intent和Intent-filter总结
一.相關概念
?
(一)基本概念
? ? ?Intent中文意思指”意圖”,按照Android的設計理念,Android使用Intent來封裝程序的”調用意圖”,不管啟動Activity、Service、BroadcastReceiver,Android都使用統一的Intent對象來封裝這一”啟動意圖”。此外,Intent也是應用程序組件之間通信的重要媒介。在Android中指定的了具體是某個組件,那么就是顯性意圖;如果只是提出要求沒有指定具體的某個人,在Android中即沒有指定某個具體的組件,那么就是隱式意圖;所有Intent頁面跳轉的方式又分為顯示跳轉和隱式跳轉。?
?
(二)Intent和三大組件
Android應用程序包含三種重要組件:Activity、Service、BroadcastReceiver,應用程序采用一致的方式啟動它們,都是依靠Intent來進行啟動的,Intent中封裝了程序要啟動的意圖。
? 下面是Intent啟動不同組件的部分方法:?
? Activity組件:?
? startActivity(Intent intent);startActivityForResult(Intent intent,int requestCode);?
? Service組件:?
? startService(Intent intent);bindService(Intent intent,ServiceConnection conn,int flags);?
? BroadcastReceiver組件:?
? sendBroadcast(Intent intent);sendOrderedBroadcast(Intent intent,String receiverPermission);?
?
(三)Intent的屬性類別
Intent的屬性及intent-filter的配置相結合使用;Intent的屬性大致包含:Component,Action,Category,Data,Type,Extra,Flag這7種屬性,其中Component用于明確指定需要啟動的組件,而Extra則用于”攜帶”需要交換的數據。?
關于Intent屬性的詳解,在簡單使用后再介紹。
?
二.Intent的使用
這里的Intent使用,主要是使用它來執行頁面的跳轉功能。?
如果Intent對象中包含了目標的class文件,那么就是顯示意圖的跳轉;如果Intent沒有包含目標的class文件,就是隱式意圖跳轉,隱式意圖跳轉就涉及到比較多的Intent對象的屬性值的比較。
?
(一)Intent顯式跳轉頁面
其中實現跳轉的java代碼非常簡單:
? Intent intent = new Intent(this, SecondActivity.class);?
? startActivity(intent);
其中具體實現是通過Intent的屬性類Component來實現,不過Component類的方法都封裝在Intent的方法里面了,不需要我們過多的去了解。?
這如果要傳遞數據也可以通過Intent對象使用putExtra方法來傳遞數據。?
這里的目標文件必須是要在AndroidManifest.xml里面注冊。
(二)Intent隱式跳轉頁面
隱式意圖的跳轉是本文主要講解的內容,也是比較難理解的內容!?
這里先使用Intent的Action和Data屬性來跳轉頁面做示例(特別要注意的是這里的Data不是Intent的數據,而是Action動作對應的數據):
?
1.布局文件activity.xml文件設計
?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:id="@+id/activity_main"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent"
? ? android:orientation="vertical">
? ? <TextView
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:text="意圖Intent" />
? ? <Button
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:onClick="action"
? ? ? ? android:text="action" />
? ? <Button
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:onClick="actionUri"
? ? ? ? android:text="actionUri" />
? ? <Button
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:onClick="ToSecondActivity"
? ? ? ? android:text="跳轉到第二個頁面" />
? ? <Button
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:onClick="MyAction"
? ? ? ? android:text="MyAction" />
? ? <Button
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:onClick="actionMain"
? ? ? ? android:text="返回桌面" />
</LinearLayout>12345678910111213141516171819202122232425262728293031323334353637383940414243
上面的xml布局文件設計有5個按鈕,具體功能開java代碼,下面詳細解釋。
1
?
2.java文件MainActivity.xml文件的設計
?
package com.example.intent;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? }
? ? //打開一個數據視圖,但是沒有要求,系統會默認讓你從多個中選擇其中一個打開
? ? public void action(View v) {
? ? ? ? Intent intent = new Intent(Intent.ACTION_VIEW);
? ? ? ? startActivity(intent);
? ? }
? ? //打開一個數據視圖,有數據要求,系統幫你打開一個瀏覽器,并連接到相關的頁面
? ? public void actionUri(View v) {
? ? ? ? Intent intent = new Intent(Intent.ACTION_VIEW);
? ? ? ? intent.setData(Uri.parse("http://www.baidu.com"));
? ? ? ? startActivity(intent);
? ? }
? ? //使用顯示跳轉的方法跳轉到第二個頁面
? ? public void ToSecondActivity(View view) {
? ? ? ? Intent intent = new Intent(this, SecondActivity.class);
? ? ? ? startActivity(intent);
? ? }
? ? //這里只用自己定義的Action字符串來找到對應的頁面
? ? public void MyAction(View v) {
? ? ? ? Intent intent = new Intent("HelloWorld");//Action字符串可以直接放在Intent的構造函數里面,也可以單獨寫
? ? ? ? // intent.setAction("HelloWorld");
? ? ? ? intent.addCategory("android.intent.category.DEFAULT");//可以沒有
? ? ? ? //但是自定義的Action的xml文件里面必須要有category元素,否則會報錯
? ? ? ? startActivity(intent);
? ? }
? ? //打開程序入口,特征是桌面
? ? public void actionMain(View v) {
? ? ? ? try {
? ? ? ? ? ? Intent intent = new Intent(Intent.ACTION_MAIN);
? ? ? ? ? ? intent.addCategory(Intent.CATEGORY_HOME);
? ? ? ? ? ? startActivity(intent);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? Toast.makeText(this, "找不到目標頁面", Toast.LENGTH_SHORT).show();
? ? ? ? }
? ? }
?
}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
這要重點理解的代碼,下面會詳細介紹。
?
3.java文件SecondActivity.java文件的設計
K?
一個簡單Activity的設計,使用代碼設計一個線程布局并添加兩個文本,第二個文本添加的是跳轉后顯示的Intent屬性。
?
4.在AndroidManifest注冊一下SecondActivity.class文件
<activity android:name=".SecondActivity" ?>
? ? <intent-filter>
? ? ? ? <action android:name="HelloWorld"/>
? ? ? ? <category android:name="android.intent.category.DEFAULT"/>
? ? </intent-filter>
</activity>123456
文件中使用intent-filter(意圖過濾器),用來存放意圖的屬性
其中MainActivity.java文件是要重點理解的;上面寫了五個按鈕對應的監聽方法。?
運行程序后顯示的界面:?
?
頁面顯示有五個按鈕,每個按鈕對應的是一個按鈕的監聽方法。下面分別介紹:?
第一個按鈕使用的是隱式意圖跳轉頁面,Action屬性是系統的Action對象值,是指跳轉到一個View的視圖,這沒有指向具體目標。?
點擊這個按鈕會顯示多個View的視圖供你選擇,效果如圖:?
可以點擊對應的視圖按鈕,進入相關界面。?
其中這里的Action值是通過構造方法來傳進去的,也可以通過Intent對象進行設置。?
?
?
第二個按鈕也是打開一個視圖,但是這個視圖有動作對應的數據,所以它會直接打開一個瀏覽器,來顯示你要打開的網頁。?
效果如圖:?
對于常用的一些頁面跳轉的Action和它對應的Date是需要我們程序員花時間去記一下的。后面會有常用的Action和Data介紹。?
?
?
第三個按鈕是顯示跳轉到另一個頁面,因為這個頁面是自定義的,所以需要在注冊表AndroidManifest里面中注冊。如果被顯式調用,只需要添加Activity的name屬性就可以了,不需要設置Activity的過濾器intent-filter也可以。?
點擊按鈕后顯示的結果:?
?
這里的Action對象的值和Category對象的值都是空的。因為前面的跳轉的Intent對象沒有這個值,所以它的對象是空的,對比下面一個按鈕就知道了。?
?
?
第四個按鈕是隱式意圖跳轉去另一個頁面,使用的Action值也不是系統定義的,而是自己定義的一個字符串。這里是通過Action和Category的值來確定一個頁面。Category代表的是動作的類別的意思。?
點擊按鈕后顯示的結果:?
?
可以考到頁面顯示了,Intent里面包含的Action的值和Category的值。如果之前沒有傳進去就不會有。?
?
?
第五個按鈕,也是隱式意圖跳轉的使用,這里的Action值和Category值都是系統定義的都具有特定的含義,兩個結合使用就相對于使用了Home鍵直接顯示到桌面。?
還有就是這個按鈕的方法里面使用到了try catch方法,這是防止程序崩潰的方法,正確情況如果輸入的Action值或Category值沒有指向某一個或一些頁面,系統會直接崩潰,所有使用try catch是十分必要的。?
意圖跳轉時使用try catch來防止出錯是非常必要的。
?
三.intent-filter詳細屬性的介紹
?
<intent-filter/>是每一個Activity對應的過濾器標簽節點。每一個過濾器里面的元素可以有:
0個或多個<action.../>
0個或多個<category.../>
0個或1個<data.../>1234
(一)全部屬性的簡介
Intent通過下面的屬性來描述的某個意圖:
?
1. action(動作): 用來表示意圖的動作,如:查看,發郵件,打電話
?
2. category(類別): 用來表示動作的類別。
?
3. data(數據): 表示與動作要操作的數據。如:查看指定的聯系人
?
4. type(數據類型): 對data類型的描述。
?
5. extras(附件信息): 附件信息。如:詳細資料,一個文件,某事。
?
6. component(目標組件): 目標組件。
下面詳細介紹各個組件的使用
?
(一)component屬性
指定了component屬性的Intent(調用setComponent(ComponentName)或者?
setClass(Context, Class),Class其實就是顯式調用需要的目標類的文件名。這個屬性用得比較少,最好不用。如果是顯示調用直接指定目標類的class文件名就可以使用了。?
比如:
?
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);12
Intent在后臺已經幫我們實現了component屬性的設置,我們不需要很麻煩的再去實現它的過程。
(二)action動作屬性
動作很大程序上決定了Intent如何構建,特別是數據和附加信息,就像一個方法名決定了參數和返回值一樣,所以應該盡可能明確地指定動作,并緊密關聯到其他的Intent字段,如Category和Data。
常用動作?
最常用的是Action_MAIN(作為初始的Activity啟動,沒有數據的輸入輸出)?
1. ACTION_MAIN 作為一個主要的進入口,而并不期望去接受數據?
2. ACTION_VIEW 向用戶去顯示數據?
3. ACTION_ATTACH_DATA 別用于指定一些數據應該附屬于一些其他的地方,例如,圖片數據應該附?
屬于聯系人?
4. ACTION_EDIT 訪問已給的數據,提供明確的可編輯?
5. ACTION_GET_CONTENT 允許用戶選擇特殊種類的數據,并返回(特殊種類的數據:照一張相片或?
錄一段音) ACTION_DIAL 撥打一個指定的號碼,顯示一個帶有號碼的用戶界面,允許?
用戶去啟動呼叫?
6. ACTION_CALL 根據指定的數據執行一次呼叫(有缺陷,使用ACTION_DIAL)?
7. ACTION_SEND 傳遞數據,被傳送的數據沒有指定,接收的action請求用戶發數據?
8. ACTION_SENDTO 發送一條信息到指定的某人?
9. ACTION_ANSWER 處理一個打進電話呼叫?
10. ACTION_INSERT 插入一條空項目到已給的容器?
11. ACTION_DELETE 從容器中刪除已給的數據?
12. ACTION_SEARCH 執行一次搜索?
13. ACTION_WEB_SEARCH 執行一次web搜索?
上面的動作都是Intent對象引用才有實際意義的。?
setAction(String action) 用來設置Intent的動作,參數可以為常量?
? ? getAction() 方法用來獲取Intent動作名稱 ?
上面的Action都是系統定義好的,具有一定意義的動作指向的動作。?
Intent的Action對象其實就是一個字符串常量,系統的Action對象是系統定義好的字符串常量,我們也可以自己定義自己的Action作為字符串常量。就像上面的例子使用到了自定義的Action字符串對象。
?
(三)category類別屬性
Intent的action、category屬性都是普通的字符串,其中action表示Intent需要完成的一個抽象”動作”,而category則為action添加額外的類別信息,通常action和category一塊使用。?
需要指出的是,一個Intent中只能包含一個action屬性,但可以包含多個category屬性。當程序創建Intent時,該Intent默認啟動常量值為andorid.intent.category.DEFAULT的組件。這里的一個Intent中只能包含一個action屬性,并不是Activity中xml的設置規范,而是你要跳轉到的頁面去,你只能設置一個Action的值。?
常用的Category:?
1.CATEGORY_DEFAULT:Android系統中默認的執行方式,按照普通Activity的執行方式執行。 ?
2.CATEGORY_HOME:設置該組件為Home Activity。?
3.CATEGORY_PREFERENCE:設置該組件為Preference。 ?
4.CATEGORY_LAUNCHER:設置為當前應用程序優先級最高的Activity,通常與ACTION_MAIN配合使用。 ?
5.CATEGORY_BROWSABLE:設置該組件可以使用瀏覽器啟動。 ?
6.CATEGORY_GADGET:設置該組件可以內嵌到另外的Activity中。?
上面的類別都是Intent對象引用才有實際意義的。
?
(四)data動作數據
Data數據用來向Action屬性提供動作的數據。這里的Data不是Intent里面的數據,而是指明動作的具體數據,比如說動作是打電話,那么打給具體的某一個人,就用到了date里面的數據來指定。同樣發郵件、或打開具體的某一個網址也是通過Data數據。?
Data屬性只接受Uri對象,Uri對象是統一資源標識符。對應概念不用太多理解,只需知道里面某些具體值的表現形式就可以了。?
Uri其實就是相當于一個網址,如圖所示:
網址只是Uri其中一種格式的字符串,要使用它還要把它解析后轉化為Uri類型。?
為Intent對象添加Data數據,代碼:?
?intent.setData(Uri.parse(“http://www.baidu.com“));?
這里的Uri的有兩個沒顯示的屬性:port的值是8080,path的值是/index?
通過下面三句代碼就可以跳轉到百度主頁面:
?
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);123
(五)type數據類型
與Data有關的,這個不是Intent的數據類型,是Intent的Action的Data數據的類型。?
比如:?
?{“.mp3”, ?“audio/x-mpeg”}, ?
{“.mp4”, “video/mp4”}, ?
{“.gif”, ?“image/gif”}, ?
{“.rmvb”, “audio/x-pn-realaudio”}, ?
這里只是做幾個簡單的示例介紹,如果是打開gif格式的數據文件,設置type=“image/gif”
?
(六)extras額外的數據信息
Extras屬性主要用于傳遞目標組件所需要的額外的數據。這個數據是可以通過Intent來保存的數據和Intent對象來獲取數據。
?
通過putExtras()方法設置。保存數據
?
通過putExtras()方法設置。獲取數據
通常我們使用Intent來直接傳遞Bundle對象,但也可以傳遞其他系統內置的一些參數。?
如果要傳遞是是對象,那么對象必須實現序列化。
?
(七)intent-filter在AndroidManifest中
1.在里可以有多個?
,只需匹配其中一個即可。?
語法:
?
<intent-filter>
<data android:host="string"
? ? ? ?android:mimeType="string"
? ? ? ?android:path="string"
? ? ? ?android:pathPattern="string"
? ? ? ?android:pathPrefix="string"
? ? ? ?android:port="string"
? ? ? ?android:scheme="string" />
</intent-filter>123456789
也可以分開寫,如:
?
? ? ?<data android:scheme="something" android:host="project.example.com" android:port="80"/>
?等同于這樣寫:
?<data android:scheme="something"/>
?<data android:host="project.example.com"/>
?<data android:port="80"/>
等同于Uri uri = Uri.parse("something://project.example.com:80");123456
Uri的格式:scheme://host:port/path or pathPrefix or pathPattern?
如果scheme沒有指定,那其它的屬性均無效;?
如果host沒有指定,那么port,path,pathPrefix,pathPattern均無效;?
如果在manifest里這樣寫:?
那么Uri uri = Uri.parse(“something://project.example.com”); 才可以匹配
2.在里可以有多個data或action ,只需匹配其中一個即可。?
3.當匹配不上任何Activity的話,會發生異常,跳出對話框:很抱歉…某某應用程序意外停止,請重試。?
4.上面所說的全部適用于Service和BroadcastReceiver。
?
(八)幾個簡單示例的代碼
?
/**
?* 跳轉到指定的網址頁面
?*/
public void toView(View v) {
? ? Intent intent = new Intent();
? ? //設置Data數據
? ? intent.setData(Uri.parse("http://www.baidu.com"));
? ? //設置Action數據
? ? intent.setAction(Intent.ACTION_VIEW);
? ? //頁面跳轉
? ? startActivity(intent);
}
/**
?* 跳轉到編輯聯系人的信息
?* 這里聯系人的姓名是:1
?*/
public void toEdit(View v) {
? ? Intent intent = new Intent();
? ? //設置Data數據
? ? intent.setData(Uri.parse("content://com.android.contacts/contacts/1"));
? ? //設置Action數據
? ? intent.setAction(Intent.ACTION_EDIT);
? ? //頁面跳轉
? ? try {
? ? ? ? startActivity(intent);
? ? } catch (Exception e) {
? ? ? ? Toast.makeText(this, "找不到該聯系人!", Toast.LENGTH_SHORT).show();
? ? }
}
/**
?* 跳轉到撥打電話的頁面
?* Data可以設置電話號碼
?*/
public void toDial(View v) {
? ? Intent intent = new Intent();
? ? //設置Data數據
? ? intent.setData(Uri.parse("tel:13814236512"));
? ? //設置Action數據
? ? intent.setAction(Intent.ACTION_DIAL);
? ? //頁面跳轉
? ? startActivity(intent);
}1234567891011121314151617181920212223242526272829303132333435363738394041424344
?
三.下面是一些Intent對象的常量值
附部分Intent屬性值:
Action:?
? ?ACTION_MAIN:Android Application的入口,每個Android應用必須且只能包含一個此類型的Action聲明。 ?
ACTION_VIEW:系統根據不同的Data類型,通過已注冊的對應Application顯示數據。?
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系統安裝了新的App之后發出帶有此Action的廣播(Broadcast)。 ?
ACTION_PACKAGE_CHANGED:Android系統中已存在的App發生改變之后(如更新)發出帶有此Action的廣播(Broadcast)。 ?
ACTION_PACKAGE_REMOVED:Android系統卸載App之后發出帶有此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:經緯數據格式,在地圖上顯示經緯度所指定的位置。?
MimeType:?
?{“.3gp”, ? ?“video/3gpp”}, ?
? ? ? ? ? ? {“.apk”, ? ?“application/vnd.android.package-archive”}, ?
? ? ? ? ? ? {“.asf”, ? ?“video/x-ms-asf”}, ?
? ? ? ? ? ? {“.avi”, ? ?“video/x-msvideo”}, ?
? ? ? ? ? ? {“.bin”, ? ?“application/octet-stream”}, ?
? ? ? ? ? ? {“.bmp”, ? ?“image/bmp”}, ?
? ? ? ? ? ? {“.c”, ?“text/plain”}, ?
? ? ? ? ? ? {“.class”, ?“application/octet-stream”}, ?
? ? ? ? ? ? {“.conf”, ? “text/plain”}, ?
? ? ? ? ? ? {“.cpp”, ? ?“text/plain”}, ?
? ? ? ? ? ? {“.doc”, ? ?“application/msword”}, ?
? ? ? ? ? ? {“.docx”, ? “application/vnd.openxmlformats-officedocument.wordprocessingml.document”}, ?
? ? ? ? ? ? {“.xls”, ? ?“application/vnd.ms-excel”},?
? ? ? ? ? ? {“.xlsx”, ? “application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”}, ?
? ? ? ? ? ? {“.exe”, ? ?“application/octet-stream”}, ?
? ? ? ? ? ? {“.gif”, ? ?“image/gif”}, ?
? ? ? ? ? ? {“.gtar”, ? “application/x-gtar”}, ?
? ? ? ? ? ? {“.gz”, “application/x-gzip”}, ?
? ? ? ? ? ? {“.h”, ?“text/plain”}, ?
? ? ? ? ? ? {“.htm”, ? ?“text/html”}, ?
? ? ? ? ? ? {“.html”, ? “text/html”}, ?
? ? ? ? ? ? {“.jar”, ? ?“application/Java-archive”}, ?
? ? ? ? ? ? {“.java”, ? “text/plain”}, ?
? ? ? ? ? ? {“.jpeg”, ? “image/jpeg”}, ?
? ? ? ? ? ? {“.jpg”, ? ?“image/jpeg”}, ?
? ? ? ? ? ? {“.js”, “application/x-JavaScript”}, ?
? ? ? ? ? ? {“.log”, ? ?“text/plain”}, ?
? ? ? ? ? ? {“.m3u”, ? ?“audio/x-mpegurl”}, ?
? ? ? ? ? ? {“.m4a”, ? ?“audio/mp4a-latm”}, ?
? ? ? ? ? ? {“.m4b”, ? ?“audio/mp4a-latm”}, ?
? ? ? ? ? ? {“.m4p”, ? ?“audio/mp4a-latm”}, ?
? ? ? ? ? ? {“.m4u”, ? ?“video/vnd.mpegurl”}, ?
? ? ? ? ? ? {“.m4v”, ? ?“video/x-m4v”},?
? ? ? ? ? ? {“.mov”, ? ?“video/quicktime”}, ?
? ? ? ? ? ? {“.mp2”, ? ?“audio/x-mpeg”}, ?
? ? ? ? ? ? {“.mp3”, ? ?“audio/x-mpeg”}, ?
? ? ? ? ? ? {“.mp4”, ? ?“video/mp4”}, ?
? ? ? ? ? ? {“.mpc”, ? ?“application/vnd.mpohun.certificate”},?
? ? ? ? ? ? {“.mpe”, ? ?“video/mpeg”},?
? ? ? ? ? ? {“.mpeg”, ? “video/mpeg”},?
? ? ? ? ? ? {“.mpg”, ? ?“video/mpeg”},?
? ? ? ? ? ? {“.mpg4”, ? “video/mp4”},?
? ? ? ? ? ? {“.mpga”, ? “audio/mpeg”}, ?
? ? ? ? ? ? {“.msg”, ? ?“application/vnd.ms-outlook”}, ?
? ? ? ? ? ? {“.ogg”, ? ?“audio/ogg”}, ?
? ? ? ? ? ? {“.pdf”, ? ?“application/pdf”}, ?
? ? ? ? ? ? {“.png”, ? ?“image/png”}, ?
? ? ? ? ? ? {“.pps”, ? ?“application/vnd.ms-powerpoint”}, ?
? ? ? ? ? ? {“.ppt”, ? ?“application/vnd.ms-powerpoint”}, ?
? ? ? ? ? ? {“.pptx”, ? “application/vnd.openxmlformats-officedocument.presentationml.presentation”}, ?
? ? ? ? ? ? {“.prop”, ? “text/plain”}, ?
? ? ? ? ? ? {“.rc”, “text/plain”}, ?
? ? ? ? ? ? {“.rmvb”, ? “audio/x-pn-realaudio”}, ?
? ? ? ? ? ? {“.rtf”, ? ?“application/rtf”}, ?
? ? ? ? ? ? {“.sh”, “text/plain”}, ?
? ? ? ? ? ? {“.tar”, ? ?“application/x-tar”},?
? ? ? ? ? ? {“.tgz”, ? ?“application/x-compressed”},?
? ? ? ? ? ? {“.txt”, ? ?“text/plain”}, ?
? ? ? ? ? ? {“.wav”, ? ?“audio/x-wav”}, ?
? ? ? ? ? ? {“.wma”, ? ?“audio/x-ms-wma”}, ?
? ? ? ? ? ? {“.wmv”, ? ?“audio/x-ms-wmv”}, ?
? ? ? ? ? ? {“.wps”, ? ?“application/vnd.ms-works”}, ?
? ? ? ? ? ? {“.xml”, ? ?“text/plain”}, ?
? ? ? ? ? ? {“.z”, ?“application/x-compress”}, ?
? ? ? ? ? ? {“.zip”, ? ?“application/x-zip-compressed”},?
?
總結:
? ? 本文只要是對Intent知識中隱式Intent意圖的講解,其實這部分內容并不是很常用,也是比較難理解一些。
學習Intent只要學會下面幾個知識點就差不多了:?
1.Intent顯式頁面跳轉的實現?
2.Intent跳轉到撥打電話頁面,固定網頁上等基礎功能。?
3.Intent學會使用數據的傳入和拿出。?
其中數據的處理,之前有個例子,大家可以借鑒一下:
? http://blog.csdn.net/wenzhi20102321/article/details/52750526
?
總結
以上是生活随笔為你收集整理的Android中的Intent和Intent-filter总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Studio 上Acti
- 下一篇: 通过点击事件监听 setOnClickL