零起點學Android(二)Intent 意圖

第一篇往往都是一些概括和介紹,以便大家方便理解一些所要學習的東西。


下面我們就要更加細節的介紹一些關於android的類! 大家可能更習慣稱起爲組件什麼的。

我更加願意追究其本源,因爲你使用的組件都是人寫的類,所以我們稱其爲類,或許更能方便你理解,也更加會有一些成就感。


Intent 是用於要執行的操作或通信所使用。

Android 基本上所有的事情都是涉及Intent這個類的。

intent 可以分爲顯示 與 隱示

顯示:明確指定了組件的名稱,因爲開發人員一般不會知道其他應用組件,

所以顯示的intent一般會用於內部傳遞給指定目標類的實例。


比如: Intent intent = new Intent(A._Activity.this,B_Activity.this)

startActivity(intent)

這樣就可以啓動B_Activity


隱示:Component name 沒有附值,不會指定目標名稱。

通常用於啓動其他應用組件,比如登陸賬號授權跳轉。

(使用隱示的intent操作時, Android 會搜索合適的響應組件,

之後將Intent對象內容跟intent filter(intent過濾器) 進行比較,

有過濾器才能接受隱示的intent 反之不能,有過濾器是可以接受顯示的intent的。

android 在過濾的時候會考慮actioncategoryDataType )

想了解隱式的Intent 我們先進入AndroidManifest.xml

<activity android:name=".MyActivity"
                  android:label="@string/app_name"
                android:theme="@android:style/Theme.Light">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
其中 
<intent-filter>

與intent 有很大關聯。看他的名字就知道他就是Intent攔截器。

沒錯、action是用來描述Intent執行動作名的字符串,並且一個攔截器中只能定義一個action標籤。

有些時候我們還可以自定義Action 字符串,後面我遇到會詳細說。(基本上就是包名+action名字 )


category是用來表示Intent的類別,也是個該死的字符串,但是他在一個攔截器中可以定義多個。

基本上android 用字符串當標識是常見的事情。當你想用隱身啓動intent的時候必須Action與category同時對應上纔可以

啓動這個意圖。

攔截器的標籤還包括:

Component name 他是用來標識組件名稱的,也是一個字符串。

接收Intent的完整名稱包括包名,這樣就會把intent發送到指定的實例中去。

Data 看字面就知道是數據啦。

Extra 附加信息也不多說 (其實是個map)

Flag 真正數據Intent 的標識。bit值

Type intent數據的mime類型(設定某種擴展名的文件用一種應用程序來打開的方式類型),

就類似你在這個程序下載個電影需要另一個程序播放。

通常android 會根據數據類型推斷,如果指定了類型 就不會自動推斷了。




啓動隱身Intent的代碼:

Intent intent = new Intent(Action_name);//這個Action_name就是對應在主配置文件中配置Intent攔截器的action-name

startActivity(intent)

注意:上文說的要和 category配對,這裏我們沒有指定category 卻仍然能找到對應的組件。因爲什麼呢?是因爲這裏面使用

了android爲我們準備好的默認category。

要是我們在配置攔截器中寫了category 的name 我們就要添加下面這樣一段代碼。

intent.addCategory (category_name)


拓展:

     Intent intent = new Intent(Intent.Action_View);

     intent.setData(Uri.parse("http://www.baidu.com"));

     startActivity(intent);

上面則可以開啓一個百度的首頁。當然還需要在住配置文件中加入權限

  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);              

startActivity(intent);

上面則可以開啓系統相機。當然也還需要在住配置文件中加入權限

 

等等等吧~


注意:我這裏都用的Activity啓動來說明事例,單intent並不是只能啓動Activity.四大組件都可以再主配置文件中通過Intent啓動

好啦 大家需要好好消化下。


接下來我們就會講android 的主要配置文件了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章