Intent對象在Android應用開發中起到很大的做用,例如激活組件(Activity,Service 等組件)或者攜帶數據的功能,相信你們在開發中常常會用到這些功能,Android中的意圖分爲顯式意圖和隱式意圖,顯式意圖你們應該用得比較多,但隱式意圖在開發過程當中也是必不可少的。在這篇文章中粗略講解下我的對隱式意圖的用法。 html
假設情景:我要從一個Activity跳轉到另一個Activity中,經過隱式意圖來激活另一個Activity,應該如何實現呢? android
首先,咱們在Manifest.xml配置文件中配置intent-filter過濾器節點: app
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.andyidea.intentdemo"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="8" />
-
- <application
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name" >
- <activity
- android:name=".IntentFirstActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
-
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity
- android:name=".IntentSecondActivity"
- android:label="@string/app_name">
- <intent-filter >
- <!--能夠定製多個動做 程序中只要有一個匹配就行 -->
- <action android:name="android.andyidea.second"/>
-
- <!--必須指定一個類別 用startActivity啓動 -->
- <category android:name="android.andyidea.category" />
-
- <!--默認必須指定一個類別 用startActivity啓動 -->
- <category android:name="android.intent.category.DEFAULT" />
-
- <!--路徑匹配 協議://主機名:端口號/路徑 -->
- <data android:scheme="http" android:host="www.andyidea.com" android:port="8080" android:path="/person"/>
-
- <!--數據類型匹配 -->
- <data android:mimeType="jpeg"/>
- </intent-filter>
- </activity>
- </application>
-
- </manifest>
第二,咱們在第一個Activity中添加相應的代碼來實現匹配,這裏就不作過多解釋了,解釋在代碼的註釋中。
- /**定義意圖對象*/
- Intent intent = new Intent();
-
- /**設置動做:能夠定製多個動做 程序中只要有一個匹配就行*/
- intent.setAction("android.andyidea.second");
-
- /**添加類別:startActivity(intent)啓動Activity時會自動添加
- * android.intent.category.DEFAULT類別,因此須要在Manifest中
- * 配置該類別.但在程序中不須要明確添加該類別*/
- intent.addCategory("android.andyidea.category");
-
- /**設置數據:API中說這個方法會將setType的方法設置的類型清除掉*/
- intent.setData(Uri.parse("http://www.andyidea.com:8080/person"));
-
- /**設置類型:API中說這個方法會將setData上面的方法設置的數據清除掉*/
- intent.setType("jpeg");
-
- /**同時設置數據和類型:若是Intent過濾器中同時包含數據和數據類型的設置
- * 就只能使用該方式來設置數據和類型*/
- intent.setDataAndType(Uri.parse("http://www.andyidea.com:8080/person"), "jpeg");
-
- /**啓動組件*/
- startActivity(intent);
至此,咱們應該對Android中的隱式意圖有個粗略的瞭解了吧。