隱式Intent的使用
在上篇文章中寫了關於顯式Intent的使用,這次,寫一下關於隱式Intent的使用。
那麼什麼是隱式Intent。
定義:隱式Intent是沒有明確目標組件名稱的Intent。
那麼隱式Intent有什麼作用呢。
在顯示Intent中,主要的是用於程式本身的Activity、Service、Broadcaster之間的通訊。而隱式Intent主要用於程式與其他不同應用程式之間的通訊。
下面我來舉一個例子:
我們知道,很多手機遊戲在玩的時候都會有分享這個功能,點擊分享之後,就會出現,比如說發送到QQ,什麼什麼微博的。這其實就是用到了隱式Intent的功能。
這次我寫了一個小程式,是這樣的,在當前程式中的主Activity中存在一個按鈕,點擊該按鈕後觸發隱式Intent事件,然後呢。當前程式中還有另一個Activity,在這個Activity中只有一個TextView,在另一個程式中,也有一個Activity,同樣裡面是一個TextView。那麼,當我點擊之後,就會出現類似手遊中點擊分享之後出現的情況。下面看一下截圖:
這裡安卓學習之路_3和安卓學習之路_4是兩個不同的應用程式,當前程式名字叫做安卓學習之路_4,那麼點擊第一個的時候,就會出現如下情況:
如上圖所示,出現了在這個應用程式中的Activity中顯示的文字。那麼點擊另一個的時候就會出現如下情況:
如上圖所示,點擊第二個就會出現本程式中的Activity。
那麼如何?這樣的功能呢。
看一下這個代碼:
public void onClick(View v) {Intent intent = new Intent();intent.setAction("com.android_4.Activity");//intent.addCategory("android.intent.category.DEFAULT");intent.addCategory(Intent.CATEGORY_DEFAULT);startActivity(intent);}
這是該程式中按鈕的點擊事件。裡面是什麼先不講,先看下面的:
上面寫到,分別會跳轉到不同程式中的Activity上,在Activity類中就不多說了。主要看兩個程式中的AndroidManifest.xml,那麼我們要能跳轉到這兩個Activity中,那麼肯定要在這個xml檔案中配置一下Activity,我們來看一下代碼:
<activity android:name="com.example.android_3.Activity03"> <intent-filter > <action android:name="com.android.Activity"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
這是在安卓學習之路_3中的xml配置。
<activity android:name="com.example.android_4.Activity01"> <intent-filter> <action android:name="com.android.Activity"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
這是在安卓學習之路_4中的xml配置。
可以看到,這裡面的action中的android:name是一摸一樣的,並且也和上面的滑鼠點擊時間中的setAction的參數是一樣的,現在來說一下上面setAction,這個方法,是通過參數來找到相同名字的activity。android.intent.category.DEFAULT這個參數是進行隱式Intent的必要。
intent.addCategory(Intent.CATEGORY_DEFAULT);
這一段代碼就是設定一下intent的屬性,其中Intent.CATEGORY_DEFAULT就是上面android.intent.category.DEFAULT這個,兩者是等價的。其實這一段代碼是可加可不加的,因為Intent的預設屬性就是這個。
做完上述操作之後,就能實作類別似於手遊中分享功能了。雖然粗燥了點,但是準系統都差不多。
End~