一:顯示Intent
我相信顯示Intent大家已經使用的非常熟練了,此處不再過多闡述,
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,FirstActivity.class);
startActivity(intent);
}
});
我們先講IntentFilter匹配規則然后在講隱式Intent,會比較容易理解,
二:IntentFilter匹配規則
IntentFilter中的過濾資訊包括action,category,data
如有要匹配過濾串列,就要同時匹配過濾串列中的action,category,data資訊,否則匹配失敗,一個Activity可以存在多組IntentFilter,只要Intent匹配其中一組即可,一組IntentFilter也可以存在多個action,category,data
1.action匹配規則
action是一個字串,系統有預定義的,我們也可以自己定義,
匹配規則:一組IntentFilter可以有多個action,只要Intent中的action與IntentFilter中的任一一個action匹配成功,則成功,匹配成功是指字串相同,字串區分大小寫,如果Intent沒有指定action也會匹配失敗
2.category匹配規則
category是一個字串,系統有預定義的,我們也可以自己定義,
Intent可以不指定category也會匹配成功,因為系統會在呼叫startActivity的時候默認為Intent加上android.intent.category.DEFAULT,但如果Intent指定了category就必須和IntentFilter中的category匹配,否則匹配失敗
3.data匹配規則
data的構成由mimeType和URI組成,
mimeType指媒體型別,比如圖片,視頻,音頻等
URI結構如下:
<scheme>://<host>:<port>/[<path> | <pathPrefix> | <pathPattern>]
scheme:URI的模式,比如http,file等,如果沒有指定scheme,則URI的引數無效,也就是URI無效,
host:URI的主機名,如果沒有指定host,則URI的引數無效,也就是URI無效,
port:埠號,只有scheme和host存在且合理,Port才有意義
path:完整路徑
pathPrefix:路徑的前綴資訊
pathPattern:完整路徑,可含通配符
匹配規則:
Intent必須指定data,而且必須與IntentFilter中的任意一個data匹配成功,才有意義,
如果我們單獨指定了mimeType,不知道URI也能匹配成功,因為URI的默認值為content和file
三:隱式Intent
隱式Intent需要明確指點組件資訊,隱式Intent需要匹配IntentFilter中設定的過濾資訊
我們首先在清單檔案中自定義action和categroy(記住可以自定義沒意義的action和categroy,只要和Intent匹配就可以)
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="com.example.implicit.Activity"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="com.example.implicit.FirstActivity"/>
</intent-filter>
</activity>
然后我們在ManActivity中隱式Intent
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.implicit.Activity");
intent.addCategory("com.example.implicit.FirstActivity");
startActivity(intent);
}
});
預定義Action和Category屬性值
Action和category的值可以自定義,Android系統也提供了許多預定義的常量值,用于啟動系統預定義的Activity、Service,
下面我們介紹一些預定義的指
Action常量 對應的字串 說明
ACTION_MIAN android.intent.action.MAIN 應用程式入口
ACTION_VIEW android.intent.action.VIEW 顯示指定資料
ACTION_EDIT android.intent.action.EDIT 編輯指定資料
ACTION_DIAL android.intent.action.DIAL 顯示撥號面板
ACTION_CALL android.intent.action.CALL 向指定用戶打電話
ACTION_SEND android.intent.action.SEND 向其他人發送資料
ACTION_SENDTO android.intent.action.MESSAGE 向其他人發送訊息
ACTION_ANSWER android.intent.action.ANSWER 應答電話
ACTION_INSERT android.intent.action.INSERT 插入資料
ACTION_DELETE android.intent.action.DELETE 洗掉資料
ACTION_RUN android.intent.action.RUN 運行資料
ACTION_SYNC android.intent.action.SYNC 用戶資料同步
ACTION_PICK_ACTIVITY android.intent.action.PICK_ACTIVITY 選擇Activity
ACTION_SEARCH android.intent.action.SEARCH 執行搜索
ACTION_WEB_SEARCH android.intent.action.WEB_SEARCH 執行Web搜索
Intent類中與Category相關的常量值串列
Category 常量對應的字串 說明
CATEGORY_DEFAULT android.intent.category.DEFAULT 默認的Category
CATEGORY_TAB android.intent.category.TAB指定Activity 作為TabActivity的Tab頁
CATEGORY_LAUNCHER android.intent.category.LAUNCHERActivity 顯示在頂級程式串列中
CATEGORY_INFO android.intent.category.INFO 用于提供包資訊CATEGORY_HOMEandroid.intent.category.HOME設定該Activity隨系統啟動而運行
CATEGORY_PREFERENCE android.intent.category.PREFERENCE 設定Activity是引數面板
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/263047.html
標籤:其他
