Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android-隱式Intent,android-intent

Android-隱式Intent,android-intent

編輯:關於android開發

Android-隱式Intent,android-intent


  隱式Intent表示不具體明確要打開的activity,利用隱式intent我們可以打開其他應用。

  一個隱式intent的主要組成部分:

    1.action 要執行的操作。

      通常以intent類的常量表示。如:

      訪問查看某個URL  Intent.ACTION_VIEW

      發送郵件      Intent.ACTION_SEND

    2.data 要訪問的數據位置。 

      設備以外的數據,如某個網頁URL

      指向某個文件的URI

      指向ContentProvider中某條記錄的某個content URI

    3.type 操作涉及的數據類型

      如text/html或audio/mpeg3.

      如果一個intent包含某類數據的位置,那麼通常可以從中推測出數據的類型。

    4.category 可選類別

      類別用於描述如何使用某個activity

      android.intent.category.LAUNCHER:activity應該顯示在頂級應用啟動器中。

      android.intent.category.INFO:雖然activity向用戶顯示了包信息,但它不應該顯示在啟動器中。

      android.intent.category.DEFAULT:DEFAULT類別必須明確的在intent過濾器中設置。如果說action告訴操作系統,activity能干啥;

      那麼DEFAULT類別告訴操作系統activity願意干啥。DEFAULT  類別實際隱含添加到了幾乎每一個隱式intent中。(唯一的例外是LAUNCHER類別)

  如同顯式intent,隱式intent也可以包含extra信息。不過,操作系統在尋找合適的activity時,不會使用任何附加在隱式intent上的extra。

  注意,隱式intent的action和data也可以與顯式intent聯合使用。這相當於要求特定的activity去處理特定任務。

  由上舉例,如果想要一個用來查看某個網址的簡單隱式intent,需要

    Action:Intent.ACTION_VIEW

    URL:某個具體URL網址的uri數據

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <data android:scheme="http" android:host="www.baidu.com"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>    

  此外補充一點,由於隱式intent並不會明確告知要打開哪些activity,有可能設備上就不會有合適的應用。這時候應用就會崩潰。為此我們在使用隱式intent之前,應該先進行安全檢查,判斷是否有合適的activity。

  

Intent i=new Intent();
....
PackageManager pm=getActivity().getPackageManager();
List<ResolveInfo> activities=pm.queryIntentActivities(i,0);
if(activities.size()>0){
//safe
}else{
//no suitable activity for this intent
}

  

  

 

     

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved