畢業設計3(研究android中的action)

下午在設計android的一個登錄的activity時,遇到這樣的困惑,對於android來講一個頁面就是一個activity,而爲了可以在一個app中使用這個「界面「(也就是activity,由於你設計了界面確定是爲了幹些什麼,固然就是activity啦),那麼你就須要在程序中註冊這個activity,由於app中調用某個activity不是直接實例化,而是經過一個uri地址訪問的,這裏描述的不大準確,但大概是這個意思,而後你在app中註冊這個activity以後就可以調用她了,註冊activity,首先在   AndroidManifest.xml中的   application標籤裏面加入   activity標籤:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.esri.arcgis.android.samples"
      android:versionCode="1"
      android:versionName="1.0">
     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
     <uses-sdk android:minSdkVersion="7" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloWorld"
                  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=".HelloWorld"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest> 
上面配置了兩個activity,個人疑問就在於,  <intent-filter>標籤中的action屬性是用來幹嗎的呢?
答案還在尋找中。

好了剛剛在google找到了一篇文章,大概給了我答案了,謝謝這位做者,摘抄以下
[Android]Intent Filter 和 action
2011-07-19 9:30

Activity 的 Intent Filterandroid

Intent Filter 描述了一個組件願意接收什麼樣的 Intent 對象,Android 將其抽象爲 android.content.IntentFilter 類。在 Android 的 AndroidManifest.xml 配置文件中能夠經過 <intent-filter > 節點爲一個 Activity 指定其 Intent Filter,以便告訴系統該 Activity 能夠響應什麼類型的 Intent。程序員

當程序員使用 startActivity(intent) 來啓動另一個 Activity 時,若是直接指定 intent 了對象的 Component 屬性,那麼 Activity Manager 將試圖啓動其 Component 屬性指定的 Activity。不然 Android 將經過 Intent 的其它屬性從安裝在系統中的全部 Activity 中查找與之最匹配的一個啓動,若是沒有找到合適的 Activity,應用程序會獲得一個系統拋出的異常。這個匹配的過程以下:app


Activity 種 Intent Filter 的匹配過程
google

Action 匹配spa

Action 是一個用戶定義的字符串,用於描述一個 Android 應用程序組件,一個 Intent Filter 能夠包含多個 Action。在 AndroidManifest.xml 的 Activity 定義時能夠在其 <intent-filter > 節點指定一個 Action 列表用於標示 Activity 所能接受的「動做」,例如:設計

<intent-filter > <action android:name="android.intent.action.MAIN" /> <action android:name="com.zy.myaction" /> …… </intent-filter>

若是咱們在啓動一個 Activity 時使用這樣的 Intent 對象:orm

Intent intent =new Intent(); intent.setAction("com.zy.myaction");

那麼全部的 Action 列表中包含了「com.zy.myaction 」的 Activity 都將會匹配成功。xml

Android 預約義了一系列的 Action 分別表示特定的系統動做。這些 Action 經過常量的方式定義在 android.content. Intent 中,以「ACTION_」開頭。咱們能夠在 Android 提供的文檔中找到它們的詳細說明。對象

URI 數據匹配blog

一個 Intent 能夠經過 URI 攜帶外部數據給目標組件。在 <intent-filter > 節點中,經過 <data/> 節點匹配外部數據。

mimeType 屬性指定攜帶外部數據的數據類型,scheme 指定協議,host、port、path 指定數據的位置、端口、和路徑。以下:

<data android:mimeType="mimeType" android:scheme="scheme" android:host="host" android:port="port" android:path="path"/>

若是在 Intent Filter 中指定了這些屬性,那麼只有全部的屬性都匹配成功時 URI 數據匹配纔會成功。

Category 類別匹配

<intent-filter > 節點中能夠爲組件定義一個 Category 類別列表,當 Intent 中包含這個列表的全部項目時 Category 類別匹配纔會成功。

相關文章
相關標籤/搜索