精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android關于AndroidManifest.xml詳細分析

移動開發(fā) Android
AndroidManifest.xml 是每個android程序中必須的文件。它位于整個項目的根目錄,描述了package中暴露的組件(activities, services, 等等),他們各自的實現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。

一、關于AndroidManifest.xml
AndroidManifest.xml 是每個android程序中必須的文件。它位于整個項目的根目錄,描述了package中暴露的組件(activities, services, 等等),他們各自的實現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。 除了能聲明程序中的Activities, ContentProviders, Services, 和Intent Receivers,還能指定permissions和instrumentation(安全控制和測試)

二、AndroidManifest.xml結構

  1. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <manifest> 
  3.     <application> 
  4.        <activity> 
  5.            <intent-filter> 
  6.                <action/> 
  7.                <category/> 
  8.            </intent-filter> 
  9.       </activity> 
  10.        <activity-alias> 
  11.            <intent-filter></intent-filter> 
  12.            <meta-data/> 
  13.       </activity-alias> 
  14.        <service> 
  15.            <intent-filter></intent-filter> 
  16.            <meta-data/> 
  17.        </service> 
  18.        <receiver> 
  19.            <intent-filter></intent-filter> 
  20.            <meta-data/> 
  21.        </receiver> 
  22.        <provider> 
  23.            <grant-uri-permission/> 
  24.            <meta-data/> 
  25.        </provider> 
  26.        <uses-library/> 
  27.     </application> 
  28.     <uses-permission/> 
  29.     <permission/> 
  30.     <permission-tree/> 
  31.     <permission-group/> 
  32.     <instrumentation/> 
  33.     <uses-sdk/> 
  34.     <uses-configuration/>  
  35.     <uses-feature/>  
  36.     <supports-screens/> 
  37. </manifest> 
  38.   

三、各個節(jié)點的詳細介紹

1、第一層():(屬性)

  1. <manifest  xmlns:android="http://schemas.android.com/apk/res/android" 
  2.           package="com.woody.test" 
  3.           android:sharedUserId="string" 
  4.           android:sharedUserLabel="string resource" 
  5.           android:versionCode="integer" 
  6.           android:versionName="string" 
  7.           android:installLocation=["auto" | "internalOnly" | "preferExternal"] > 
  8. </manifest> 
  9.   

A、xmlns:android

定義android命名空間,一般為 http://schemas.android.com/apk/res/android ,這樣使得Android中各種標準屬性能在文件中使用,提供了大部分元素中的數(shù)據(jù)。

B、package

指定本應用內(nèi)java主程序包的包名,它也是一個應用進程的默認名稱

C、sharedUserId

表明數(shù)據(jù)權限,因為默認情況下,Android給每個APK分配一個唯一的UserID,所以是默認禁止不同APK訪問共享數(shù)據(jù)的。若要共享數(shù)據(jù),第一可以采用Share Preference方法,第二種就可以采用sharedUserId了,將不同APK的sharedUserId都設為一樣,則這些APK之間就可以互相共享數(shù)據(jù)了。

Android給每個APK進程分配一個單獨的用戶空間,其manifest中的userid就是對應一個Linux用戶(Android 系統(tǒng)是基于Linux)的.所以不同APK(用戶)間互相訪問數(shù)據(jù)默認是禁止的.但是它也提供了2種APK間共享數(shù)據(jù)的形式:

1. Share Preference. / Content Provider

APK可以指定接口和數(shù)據(jù)給任何其他APK讀取. 需要自己實現(xiàn)接口和Share的數(shù)據(jù).

本文對于這個不做詳細解釋

2. Shared User id

通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中.所以默認就是可以互相訪問任意數(shù)據(jù). 也可以配置成運行成不同的進程, 同時可以訪問其他APK的數(shù)據(jù)目錄下的數(shù)據(jù)庫和文件.就像訪問本程序的數(shù)據(jù)一樣.比如某個公司開發(fā)了多個Android 程序, 那么可以把數(shù)據(jù),圖片等資源集中放到APK A中去. 然后這個公司的所有APK都使用同一個User ID, 那么所有的資源都可以從APK A中讀取.

舉個例子:

APK A 和APK B 都是C公司的產(chǎn)品,那么如果用戶從APK A中登陸成功.那么打開APK B的時候就不用

再次登陸. 具體實現(xiàn)就是 A和B設置成同一個User ID:

* 在2個APK的AndroidManifest.xml 配置User ID:

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2.    package="com.android.demo.a1" 
  3.    android:sharedUserId="com.c"

這個"com.c" 就是user id, 然后packagename APK A就是上面的內(nèi)容, APK B可能
是"com.android.demo.b1" 這個沒有限制

這個設定好之后, APK B就可以像打開本地數(shù)據(jù)庫那樣 打開APK A中的數(shù)據(jù)庫了.

APK A把登陸信息存放在A的數(shù)據(jù)目錄下面. APK B每次啟動的時候讀取APK A下面的數(shù)據(jù)庫

判斷是否已經(jīng)登陸:

APK B中的代碼:

  1. friendContext = this.createPackageContext( 
  2.                   "com.android.demo.a1"
  3.                   Context.CONTEXT_IGNORE_SECURITY); 

通過A的package name 就可以得到A的 packagecontext

通過這個context就可以直接打開數(shù)據(jù)庫

D、sharedUserLabel

一個共享的用戶名,它只有在設置了sharedUserId屬性的前提下才會有意義

E、versionCode

是給設備程序識別版本(升級)用的必須是一個interger值代表app更新過多少次,比如第一版一般為1,之后若要更新版本就設置為2,3等等。。。

F、versionName

這個名稱是給用戶看的,你可以將你的APP版本號設置為1.1版,后續(xù)更新版本設置為1.2、2.0版本等等。。。

G、installLocation

安裝參數(shù),是Android2.2中的一個新特性,installLocation有三個值可以選擇:internalOnly、auto、preferExternal

選擇preferExternal,系統(tǒng)會優(yōu)先考慮將APK安裝到SD卡上(當然最終用戶可以選擇為內(nèi)部ROM存儲上,如果SD存儲已滿,也會安裝到內(nèi)部存儲上)

選擇auto,系統(tǒng)將會根據(jù)存儲空間自己去適應

選擇internalOnly是指必須安裝到內(nèi)部才能運行

(注:需要進行后臺類監(jiān)控的APP最好安裝在內(nèi)部,而一些較大的游戲APP最好安裝在SD卡上。現(xiàn)默認為安裝在內(nèi)部,如果把APP安裝在SD卡上,首先得設置你的level為8,并且要配置android:installLocation這個參數(shù)的屬性為preferExternal)

2、第二層():屬性

一個AndroidManifest.xml中必須含有一個Application標簽,這個標簽聲明了每一個應用程序的組件及其屬性(如icon,label,permission等)

  1. <application  android:allowClearUserData=["true" | "false"
  2.              android:allowTaskReparenting=["true" | "false"
  3.              android:backupAgent="string" 
  4.              android:debuggable=["true" | "false"
  5.              android:description="string resource" 
  6.              android:enabled=["true" | "false"
  7.              android:hasCode=["true" | "false"
  8.              android:icon="drawable resource" 
  9.              android:killAfterRestore=["true" | "false"
  10.              android:label="string resource" 
  11.              android:manageSpaceActivity="string" 
  12.              android:name="string" 
  13.              android:permission="string" 
  14.              android:persistent=["true" | "false"
  15.              android:process="string" 
  16.              android:restoreAnyVersion=["true" | "false"
  17.              android:taskAffinity="string" 
  18.              android:theme="resource or theme" > 
  19. </application> 
  20.   

A、android:allowClearUserData('true' or 'false')

用戶是否能選擇自行清除數(shù)據(jù),默認為true,程序管理器包含一個選擇允許用戶清除數(shù)據(jù)。當為true時,用戶可自己清理用戶數(shù)據(jù),反之亦然

B、android:allowTaskReparenting('true' or 'false')

是否允許activity更換從屬的任務,比如從短信息任務切換到瀏覽器任務

C、android:backupAgent

這也是Android2.2中的一個新特性,設置該APP的備份,屬性值應該是一個完整的類名,如com.project.TestCase,此屬性并沒有默認值,并且類名必須得指定(就是個備份工具,將數(shù)據(jù)備份到云端的操作)

D、android:debuggable

這個從字面上就可以看出是什么作用的,當設置為true時,表明該APP在手機上可以被調(diào)試。默認為false,在false的情況下調(diào)試該APP,就會報以下錯誤:

Device XXX requires that applications explicitely declare themselves as debuggable in their manifest.

Application XXX does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.

E、android:description/android:label

此兩個屬性都是為許可提供的,均為字符串資源,當用戶去看許可列表(android:label)或者某個許可的詳細信息(android:description)時,這些字符串資源就可以顯示給用戶。label應當盡量簡短,之需要告知用戶該許可是在保護什么功能就行。而description可以用于具體描述獲取該許可的程序可以做哪些事情,實際上讓用戶可以知道如果他們同意程序獲取該權限的話,該程序可以做什么。我們通常用兩句話來描述許可,第一句描述該許可,第二句警告用戶如果批準該權限會可能有什么不好的事情發(fā)生

F、android:enabled

Android系統(tǒng)是否能夠實例化該應用程序的組件,如果為true,每個組件的enabled屬性決定那個組件是否可以被 enabled。如果為false,它覆蓋組件指定的值;所有組件都是disabled。

G、android:hasCode('true' or 'false')

表示此APP是否包含任何的代碼,默認為true,若為false,則系統(tǒng)在運行組件時,不會去嘗試加載任何的APP代碼

一個應用程序自身不會含有任何的代碼,除非內(nèi)置組件類,比如Activity類,此類使用了AliasActivity類,當然這是個罕見的現(xiàn)象

(在Android2.3可以用標準C來開發(fā)應用程序,可在androidManifest.xml中將此屬性設置為false,因為這個APP本身已經(jīng)不含有任何的JAVA代碼了)

H、android:icon

這個很簡單,就是聲明整個APP的圖標,圖片一般都放在drawable文件夾下

I、android:killAfterRestore

是否復位需要重啟

J、android:manageSpaceActivity

讓應用手動管理應用的數(shù)據(jù)目錄

K、android:name

為應用程序所實現(xiàn)的Application子類的全名。當應用程序進程開始時,該類在所有應用程序組件之前被實例化。

若該類(比方androidMain類)是在聲明的package下,則可以直接聲明android:name="androidMain",但此類是在package下面的子包的話,就必須聲明為全路徑或android:name="package名稱.子包名成.androidMain"

L、android:permission

設置許可名,這個屬性若在上定義的話,是一個給應用程序的所有組件設置許可的便捷方式,當然它是被各組件設置的許可名所覆蓋的

M、android:presistent

該應用程序是否應該在任何時候都保持運行狀態(tài),默認為false。因為應用程序通常不應該設置本標識,持續(xù)模式僅僅應該設置給某些系統(tǒng)應用程序才是有意義的。

N、android:process

應用程序運行的進程名,它的默認值為元素里設置的包名,當然每個組件都可以通過設置該屬性來覆蓋默認值。如果你想兩個應用程序共用一個進程的話,你可以設置他們的android:process相同,但前提條件是他們共享一個用戶ID及被賦予了相同證書的時候

O、android:restoreAnyVersion

同樣也是android2.2的一個新特性,用來表明應用是否準備嘗試恢復所有的備份,甚至該備份是比當前設備上更要新的版本,默認是false

P、android:taskAffinity

擁有相同的affinity的Activity理論上屬于相同的Task,應用程序默認的affinity的名字是元素中設定的package名

Q、android:theme
是一個資源的風格,它定義了一個默認的主題風格給所有的activity,當然也可以在自己的theme里面去設置它,有點類似style。

3、第三層():屬性

  1. <activity android:allowTaskReparenting=["true" | "false"
  2.           android:alwaysRetainTaskState=["true" | "false"
  3.           android:clearTaskOnLaunch=["true" | "false"
  4.           android:configChanges=["mcc""mnc""locale"
  5.                                  "touchscreen""keyboard""keyboardHidden"
  6.                                  "navigation""orientation""screenLayout"
  7.                                  "fontScale""uiMode"
  8.           android:enabled=["true" | "false"
  9.           android:excludeFromRecents=["true" | "false"
  10.           android:exported=["true" | "false"
  11.           android:finishOnTaskLaunch=["true" | "false"
  12.           android:icon="drawable resource" 
  13.           android:label="string resource" 
  14.           android:launchMode=["multiple" | "singleTop" | 
  15.                               "singleTask" | "singleInstance"
  16.           android:multiprocess=["true" | "false"
  17.           android:name="string" 
  18.           android:noHistory=["true" | "false"]   
  19.           android:permission="string" 
  20.           android:process="string" 
  21.           android:screenOrientation=["unspecified" | "user" | "behind" | 
  22.                                      "landscape" | "portrait" | 
  23.                                      "sensor" | "nosensor"
  24.           android:stateNotNeeded=["true" | "false"
  25.           android:taskAffinity="string" 
  26.           android:theme="resource or theme" 
  27.           android:windowSoftInputMode=["stateUnspecified"
  28.                                        "stateUnchanged""stateHidden"
  29.                                        "stateAlwaysHidden""stateVisible"
  30.                                        "stateAlwaysVisible""adjustUnspecified"
  31.                                        "adjustResize""adjustPan"] >    
  32. </activity> 
  33.   

(注:有些在application中重復的就不多闡述了)
A、android:alwaysRetainTaskState
是否保留狀態(tài)不變, 比如切換回home, 再從新打開,activity處于最后的狀態(tài)。比如一個瀏覽器擁有很多狀態(tài)(當打開了多個TAB的時候),用戶并不希望丟失這些狀態(tài)時,此時可將此屬性設置為true
B、android:clearTaskOnLaunch
比如 P 是 activity, Q 是被P 觸發(fā)的 activity, 然后返回Home, 重新啟動 P,是否顯示 Q
C、android:configChanges
當配置list發(fā)生修改時, 是否調(diào)用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation". 這個我用過,主要用來看手機方向改變的. android手機在旋轉后,layout會重新布局, 如何做到呢?正常情況下. 如果手機旋轉了.當前Activity后殺掉,然后根據(jù)方向重新加載這個Activity. 就會從onCreate開始重新加載.如果你設置了 這個選項, 當手機旋轉后,當前Activity之后調(diào)用onConfigurationChanged() 方法. 而不跑onCreate方法等.
D、android:excludeFromRecents
是否可被顯示在最近打開的activity列表里,默認是false
E、android:finishOnTaskLaunch
當用戶重新啟動這個任務的時候,是否關閉已打開的activity,默認是false如果這個屬性和allowTaskReparenting都是true,這個屬性就是王牌。Activity的親和力將被忽略。該Activity已經(jīng)被摧毀并非re-parented
F、android:launchMode(Activity加載模式)
在多Activity開發(fā)中,有可能是自己應用之間的Activity跳轉,或者夾帶其他應用的可復用Activity。可能會希望跳轉到原來某個Activity實例,而不是產(chǎn)生大量重復的Activity。這需要為Activity配置特定的加載模式,而不是使用默認的加載模式
Activity有四種加載模式:
standard、singleTop、singleTask、singleInstance(其中前兩個是一組、后兩個是一組),默認為standard
standard:就是intent將發(fā)送給新的實例,所以每次跳轉都會生成新的activity。
singleTop:也是發(fā)送新的實例,但不同standard的一點是,在請求的Activity正好位于棧頂時(配置成singleTop的Activity),不會構造新的實例
singleTask:和后面的singleInstance都只創(chuàng)建一個實例,當intent到來,需要創(chuàng)建設置為singleTask的Activity的時候,系統(tǒng)會檢查棧里面是否已經(jīng)有該Activity的實例。如果有直接將intent發(fā)送給它。
singleInstance:首先說明一下task這個概念,Task可以認為是一個棧,可放入多個Activity。比如啟動一個應用,那么Android就創(chuàng)建了一個Task,然后啟動這個應用的入口Activity,那在它的界面上調(diào)用其他的Activity也只是在這個task里面。那如果在多個task中共享一個Activity的話怎么辦呢。舉個例來說,如果開啟一個導游服務類的應用程序,里面有個Activity是開啟GOOGLE地圖的,當按下home鍵退回到主菜單又啟動GOOGLE地圖的應用時,顯示的就是剛才的地圖,實際上是同一個Activity,實際上這就引入了singleInstance。singleInstance模式就是將該Activity單獨放入一個棧中,這樣這個棧中只有這一個Activity,不同應用的intent都由這個Activity接收和展示,這樣就做到了共享。當然前提是這些應用都沒有被銷毀,所以剛才是按下的HOME鍵,如果按下了返回鍵,則無效
G、android:multiprocess
是否允許多進程,默認是false
在實際開發(fā)中,CP有以下兩種用法:
1)和應用在一個APK包里
這種情況下和應用在同一進程中。process name和uid都一樣。
2)單獨在一個APK包里。
這種情況下,如果在AndroidManifest.xml文件里聲明了和某個進程同屬一個進程,如:

  1. package="com.android.providers.telephony" 
  2. android:sharedUserId="android.uid.phone">                 
  3. android:allowClearUserData="false"                  
  4. android:label="Dialer Storage"                  
  5. android:icon="@drawable/ic_launcher_phone">   
  6. android:authorities="telephony"  
  7. android:multiprocess="true" /> 
  8.   

這個里面通過android:sharedUserId="android.uid.phone"和android:process="com.android.phone"聲明了該CP是和phone進程同屬一個進程,擁有同樣的process name和uid.
如果沒有上述聲明,那么該CP是在獨立的進程中,擁有屬于自己的process name和uid.
以上兩種用法可以總結為:
1)CP和某個進程同屬一個進程
這種情況下,當該進程啟動時,會搜索屬于該進程的所有CP,并加載。
2)CP屬于獨立的一個進程。
這種情況下,只有需要用到該CP時,才會去加載。
那么,當一個進程想要操作一個CP時,先需要獲取該CP的對象,系統(tǒng)是如何處理呢:
1)如果該CP屬于當前主叫進程,因為在進程啟動時就已經(jīng)加載過了,所以系統(tǒng)會直接返回該CP的對象。
2)如果該CP不屬于當前主叫進程,那么系統(tǒng)會進行相關處理(由ActivityManagerService進行,以下簡稱為AMS):
所有已加載的CP信息都已保存在AMS中。當需要獲取某個CP的對象時,AMS會先判斷該CP是否已被加載
----如果已被加載,該CP和當前主叫進程不屬一個進程,但是該CP設置了multiprocess的屬性(如上例中的android:multiprocess="true"),并且該CP屬于系統(tǒng)級CP,那么就在當前主叫進程內(nèi)部新生成該CP的對象。否則就需要通過IPC機制進行調(diào)用。
----如果還未被加載,該CP和當前主叫進程不屬一個進程,但是該CP設置了multiprocess的屬性(如上例中的android:multiprocess="true"),并且該CP屬于系統(tǒng)級CP,那么就在當前主叫進程內(nèi)部新生成該CP的對象。否則就需要先創(chuàng)建該CP所在的進程,然后再通過IPC機制進行調(diào)用。
H、android:noHistory
當用戶從Activity上離開并且它在屏幕上不再可見時,Activity是否從Activity stack中清除并結束。默認是false。Activity不會留下歷史痕跡
I、android:screenOrientation
activity顯示的模式
默認為unspecified:由系統(tǒng)自動判斷顯示方向
landscape橫屏模式,寬度比高度大
portrait豎屏模式, 高度比寬度大
user模式,用戶當前首選的方向
behind模式:和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)
sensor模式:有物理的感應器來決定。如果用戶旋轉設備這屏幕會橫豎屏切換
nosensor模式:忽略物理感應器,這樣就不會隨著用戶旋轉設備而更改了
J、android:stateNotNeeded
activity被銷毀或者成功重啟時是否保存狀態(tài)
K、android:windowSoftInputMode
activity主窗口與軟鍵盤的交互模式,可以用來避免輸入法面板遮擋問題,Android1.5后的一個新特性。
這個屬性能影響兩件事情:
【A】當有焦點產(chǎn)生時,軟鍵盤是隱藏還是顯示
【B】是否減少活動主窗口大小以便騰出空間放軟鍵盤
各值的含義:
【A】stateUnspecified:軟鍵盤的狀態(tài)并沒有指定,系統(tǒng)將選擇一個合適的狀態(tài)或依賴于主題的設置
【B】stateUnchanged:當這個activity出現(xiàn)時,軟鍵盤將一直保持在上一個activity里的狀態(tài),無論是隱藏還是顯示
【C】stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏
【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態(tài)
【G】adjustUnspecified:默認設置,通常由系統(tǒng)自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調(diào)整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當前窗口的內(nèi)容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內(nèi)容的部分

4、第四層()
結構圖:

  1. <intent-filter  android:icon="drawable resource" 
  2.                android:label="string resource" 
  3.                android:priority="integer" > 
  4.       <action /> 
  5.       <category /> 
  6.       <data /> 
  7. </intent-filter>  
  8.   

#p#

A、intent-filter屬性
android:priority(解釋:有序廣播主要是按照聲明的優(yōu)先級別,如A的級別高于B,那么,廣播先傳給A,再傳給B。優(yōu)先級別就是用設置priority屬性來確定,范圍是從-1000~1000,數(shù)越大優(yōu)先級別越高)Intent filter內(nèi)會設定的資料包括action,data與category三種。也就是說filter只會與intent里的這三種資料作對比動作
B、action屬性
action很簡單,只有android:name這個屬性。常見的android:name值為android.intent.action.MAIN,表明此activity是作為應用程序的入口。

有關android:name的具體值:
String ADD_SHORTCUT_ACTION 動作:
在系統(tǒng)中添加一個快捷方式。
"android.intent.action.ADD_SHORTCUT" String ALL_APPS_ACTION 動作:
列舉所有可用的應用。
"android.intent.action.ALL_APPS" String ALTERNATIVE_CATEGORY 類別:
說明 activity 是用戶正在瀏覽的數(shù)據(jù)的一個可選操作。輸入:無。
"android.intent.category.ALTERNATIVE" String ANSWER_ACTION 動作:
處理撥入的電話。
"android.intent.action.ANSWER" String BATTERY_CHANGED_ACTION 廣播:
充電狀態(tài),或者電池的電量發(fā)生變化。
"android.intent.action.BATTERY_CHANGED" String BOOT_COMPLETED_ACTION 廣播:
在系統(tǒng)啟動后,這個動作被廣播一次(只有一次)。
"android.intent.action.BOOT_COMPLETED" String BROWSABLE_CATEGORY 類別:
能夠被瀏覽器安全使用的 activities 必須支持這個類別。
"android.intent.category.BROWSABLE" String BUG_REPORT_ACTION 動作:
顯示 activity 報告錯誤。
"android.intent.action.BUG_REPORT" String CALL_ACTION 動作:
撥打電話,被呼叫的聯(lián)系人在數(shù)據(jù)中指定。
"android.intent.action.CALL" String CALL_FORWARDING_STATE_CHANGED_ACTION 廣播:
語音電話的呼叫轉移狀態(tài)已經(jīng)改變。
"android.intent.action.CFF" String CLEAR_CREDENTIALS_ACTION 動作:
清除登陸憑證 (credential)。
"android.intent.action.CLEAR_CREDENTIALS" String CONFIGURATION_CHANGED_ACTION 廣播:
設備的配置信息已經(jīng)改變。
String DATA_ACTIVITY_STATE_CHANGED_ACTION 廣播:
電話的數(shù)據(jù)活動(data activity)狀態(tài)(即收發(fā)數(shù)據(jù)的狀態(tài))已經(jīng)改變。 "android.intent.action.DATA_ACTIVITY" String DATA_CONNECTION_STATE_CHANGED_ACTION 廣播:電話的數(shù)據(jù)連接狀態(tài)已經(jīng)改變。
"android.intent.action.DATA_STATE" String DATE_CHANGED_ACTION 廣播:
日期被改變。
"android.intent.action.DATE_CHANGED" String DEFAULT_ACTION 動作:
和 VIEW_ACTION 相同,是在數(shù)據(jù)上執(zhí)行的標準動作。
"android.intent.action.VIEW" String DEFAULT_CATEGORY 類別:
如果 activity 是對數(shù)據(jù)執(zhí)行確省動作(點擊, center press)的一個選項,需要設置這個類別。 "android.intent.category.DEFAULT" String DELETE_ACTION 動作:
從容器中刪除給定的數(shù)據(jù)。
"android.intent.action.DELETE" String DEVELOPMENT_PREFERENCE_CATEGORY 類別:
說明 activity 是一個設置面板 (development preference panel). "android.intent.category.DEVELOPMENT_PREFERENCE" String DIAL_ACTION 動作:
撥打數(shù)據(jù)中指定的電話號碼。
"android.intent.action.DIAL String EDIT_ACTION 動作:
為制定的數(shù)據(jù)顯示可編輯界面。
"android.intent.action.EDIT" String EMBED_CATEGORY 類別:
能夠在上級(父)activity 中運行。
"android.intent.category.EMBED" String EMERGENCY_DIAL_ACTION 動作:
撥打緊急電話號碼。
"android.intent.action.EMERGENCY_DIAL" int FORWARD_RESULT_LAUNCH 啟動標記:
如果這個標記被設置,而且被一個已經(jīng)存在的 activity 用來啟動新的 activity,已有 activity 的回復目標 (reply target) 會被轉移給新的 activity。
16 0x00000010 String FOTA_CANCEL_ACTION 廣播:
取消所有被掛起的 (pending) 更新下載。
"android.server.checkin.FOTA_CANCEL" String FOTA_INSTALL_ACTION 廣播:
更新已經(jīng)被確認,馬上就要開始安裝。
"android.server.checkin.FOTA_INSTALL" String FOTA_READY_ACTION 廣播:
更新已經(jīng)被下載,可以開始安裝。
"android.server.checkin.FOTA_READY" String FOTA_RESTART_ACTION 廣播:
恢復已經(jīng)停止的更新下載。
"android.server.checkin.FOTA_RESTART" String FOTA_UPDATE_ACTION 廣播:
通過 OTA 下載并安裝操作系統(tǒng)更新。
"android.server.checkin.FOTA_UPDATE" String FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY 類別:
作為代碼框架下儀器的測試。
"android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" String GADGET_CATEGORY 類別:這個 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。 "android.intent.category.GADGET" String GET_CONTENT_ACTION 動作:
讓用戶選擇數(shù)據(jù)并返回。
"android.intent.action.GET_CONTENT" String HOME_CATEGORY 類別:
主屏幕 (activity),設備啟動后顯示的第一個 activity。
"android.intent.category.HOME" String INSERT_ACTION 動作:
在容器中插入一個空項 (item)。
"android.intent.action.INSERT" String INTENT_EXTRA 附加數(shù)據(jù):
和PICK_ACTIVITY_ACTION 一起使用時,說明用戶選擇的用來顯示的 activity;
和ADD_SHORTCUT_ACTION 一起使用的時候,描述要添加的快捷方式。 "android.intent.extra.INTENT" String LABEL_EXTRA 附加數(shù)據(jù):
大寫字母開頭的字符標簽,和 ADD_SHORTCUT_ACTION 一起使用。
"android.intent.extra.LABEL" String LAUNCHER_CATEGORY 類別:
Activity 應該被顯示在頂級的launcher 中。
"android.intent.category.LAUNCHER" String LOGIN_ACTION 動作:
獲取登錄憑證。
"android.intent.action.LOGIN" String MAIN_ACTION 動作:
作為主入口點啟動,不需要數(shù)據(jù)。
"android.intent.action.MAIN" String MEDIABUTTON_ACTION 廣播:
用戶按下了“Media Button”。
"android.intent.action.MEDIABUTTON" String MEDIA_BAD_REMOVAL_ACTION 廣播:
擴展介質(zhì)(擴展卡)已經(jīng)從 SD 卡插槽拔出,但是掛載點 (mount point) 還沒解除 (unmount)。 "android.intent.action.MEDIA_BAD_REMOVAL" String MEDIA_EJECT_ACTION 廣播:
用戶想要移除擴展介質(zhì)(拔掉擴展卡)。
"android.intent.action.MEDIA_EJECT" String MEDIA_MOUNTED_ACTION 廣播:
擴展介質(zhì)被插入,而且已經(jīng)被掛載。
"android.intent.action.MEDIA_MOUNTED" String MEDIA_REMOVED_ACTION 廣播:
擴展介質(zhì)被移除。
"android.intent.action.MEDIA_REMOVED" String MEDIA_SCANNER_FINISHED_ACTION 廣播:
已經(jīng)掃描完介質(zhì)的一個目錄。
"android.intent.action.MEDIA_SCANNER_FINISHED" String MEDIA_SCANNER_STARTED_ACTION 廣播:
開始掃描介質(zhì)的一個目錄。
"android.intent.action.MEDIA_SCANNER_STARTED" String MEDIA_SHARED_ACTION 廣播:
擴展介質(zhì)的掛載被解除 (unmount),因為它已經(jīng)作為 USB 大容量存儲被共享。 "android.intent.action.MEDIA_SHARED" String MEDIA_UNMOUNTED_ACTION 廣播:
擴展介質(zhì)存在,但是還沒有被掛載 (mount)。
"android.intent.action.MEDIA_UNMOUNTED" String MESSAGE_WAITING_STATE_CHANGED_ACTION 廣播:
電話的消息等待(語音郵件)狀態(tài)已經(jīng)改變。
"android.intent.action.MWI" int MULTIPLE_TASK_LAUNCH 啟動標記:
和 NEW_TASK_LAUNCH 聯(lián)合使用,禁止將已有的任務改變?yōu)榍熬叭蝿? (foreground)。
8 0x00000008 String NETWORK_TICKLE_RECEIVED_ACTION 廣播:
設備收到了新的網(wǎng)絡 "tickle" 通知。
"android.intent.action.NETWORK_TICKLE_RECEIVED" int NEW_TASK_LAUNCH 啟動標記:
設置以后,activity 將成為歷史堆棧中的第一個新任務(棧頂)。
4 0x00000004 int NO_HISTORY_LAUNCH 啟動標記:
設置以后,新的 activity 不會被保存在歷史堆棧中。
1 0x00000001 String PACKAGE_ADDED_ACTION 廣播:
設備上新安裝了一個應用程序包。
"android.intent.action.PACKAGE_ADDED" String PACKAGE_REMOVED_ACTION 廣播:
設備上刪除了一個應用程序包。
"android.intent.action.PACKAGE_REMOVED" String PHONE_STATE_CHANGED_ACTION 廣播:
電話狀態(tài)已經(jīng)改變。
"android.intent.action.PHONE_STATE" String PICK_ACTION 動作:
從數(shù)據(jù)中選擇一個項目 (item),將被選中的項目返回。
"android.intent.action.PICK" String PICK_ACTIVITY_ACTION 動作:
選擇一個activity,返回被選擇的 activity 的類(名)。
"android.intent.action.PICK_ACTIVITY" String PREFERENCE_CATEGORY 類別:
activity是一個設置面板 (preference panel)。
"android.intent.category.PREFERENCE" String PROVIDER_CHANGED_ACTION 廣播:
更新將要(真正)被安裝。
"android.intent.action.PROVIDER_CHANGED" String PROVISIONING_CHECK_ACTION 廣播:
要求 polling of provisioning service 下載最新的設置。 "android.intent.action.PROVISIONING_CHECK" String RUN_ACTION 動作:
運行數(shù)據(jù)(指定的應用),無論它(應用)是什么。
"android.intent.action.RUN" String SAMPLE_CODE_CATEGORY 類別:
作為一個示例代碼例子(不是普通用戶體驗的一部分)。 "android.intent.category.SAMPLE_CODE" String SCREEN_OFF_ACTION 廣播:
屏幕被關閉。
"android.intent.action.SCREEN_OFF" String SCREEN_ON_ACTION 廣播:
屏幕已經(jīng)被打開。
"android.intent.action.SCREEN_ON" String SELECTED_ALTERNATIVE_CATEGORY 類別:
對于被用戶選中的數(shù)據(jù),activity 是它的一個可選操作。 "android.intent.category.SELECTED_ALTERNATIVE" String SENDTO_ACTION 動作:
向 data 指定的接收者發(fā)送一個消息。
"android.intent.action.SENDTO" String SERVICE_STATE_CHANGED_ACTION 廣播:
電話服務的狀態(tài)已經(jīng)改變。
"android.intent.action.SERVICE_STATE" String SETTINGS_ACTION 動作:
顯示系統(tǒng)設置。輸入:無。
"android.intent.action.SETTINGS" String SIGNAL_STRENGTH_CHANGED_ACTION 廣播:
電話的信號強度已經(jīng)改變。
"android.intent.action.SIG_STR" int SINGLE_TOP_LAUNCH 啟動標記:
設置以后,如果 activity 已經(jīng)啟動,而且位于歷史堆棧的頂端,將不再啟動(不重新啟動) activity。 2 0x00000002 String STATISTICS_REPORT_ACTION 廣播:
要求 receivers 報告自己的統(tǒng)計信息。
"android.intent.action.STATISTICS_REPORT" String STATISTICS_STATE_CHANGED_ACTION 廣播:
統(tǒng)計信息服務的狀態(tài)已經(jīng)改變。
"android.intent.action.STATISTICS_STATE_CHANGED" String SYNC_ACTION 動作:
執(zhí)行數(shù)據(jù)同步。
"android.intent.action.SYNC" String TAB_CATEGORY 類別:
這個 activity 應該在 TabActivity 中作為一個 tab 使用。
"android.intent.category.TAB" String TEMPLATE_EXTRA 附加數(shù)據(jù):
新記錄的初始化模板。
"android.intent.extra.TEMPLATE" String TEST_CATEGORY 類別:
作為測試目的使用,不是正常的用戶體驗的一部分。
"android.intent.category.TEST" String TIMEZONE_CHANGED_ACTION 廣播:
時區(qū)已經(jīng)改變。
"android.intent.action.TIMEZONE_CHANGED" String TIME_CHANGED_ACTION 廣播:
時間已經(jīng)改變(重新設置)。
"android.intent.action.TIME_SET" String TIME_TICK_ACTION 廣播:
當前時間已經(jīng)變化(正常的時間流逝)。
"android.intent.action.TIME_TICK" String UMS_CONNECTED_ACTION 廣播:
設備進入 USB 大容量存儲模式。
"android.intent.action.UMS_CONNECTED" String UMS_DISCONNECTED_ACTION 廣播:
設備從 USB 大容量存儲模式退出。
"android.intent.action.UMS_DISCONNECTED" String UNIT_TEST_CATEGORY 類別:
應該被用作單元測試(通過 test harness 運行)。
"android.intent.category.UNIT_TEST" String VIEW_ACTION 動作:
向用戶顯示數(shù)據(jù)。
"android.intent.action.VIEW" String WALLPAPER_CATEGORY 類別:
這個 activity 能過為設備設置墻紙。
"android.intent.category.WALLPAPER" String WALLPAPER_CHANGED_ACTION 廣播:
系統(tǒng)的墻紙已經(jīng)改變。
"android.intent.action.WALLPAPER_CHANGED" String WALLPAPER_SETTINGS_ACTION 動作:
顯示選擇墻紙的設置界面。輸入:無。
"android.intent.action.WALLPAPER_SETTINGS" String WEB_SEARCH_ACTION 動作:
執(zhí)行 web 搜索。
"android.intent.action.WEB_SEARCH" String XMPP_CONNECTED_ACTION 廣播:
XMPP 連接已經(jīng)被建立。
"android.intent.action.XMPP_CONNECTED" String XMPP_DISCONNECTED_ACTION 廣播:
XMPP 連接已經(jīng)被斷開。

C、category屬性
category也只有android:name屬性。常見的android:name值android.intent.category.LAUNCHER(決定應用程序是否顯示在程序列表里)
有關android:name具體的值:
CATEGORY_ALTERNATIVE

設置這個activity是否可以被認為是用戶正在瀏覽的數(shù)據(jù)的一個可選擇的action

CATEGORY_APP_BROWSER

和ACTION_MAIN一起使用,用來啟動瀏覽器應用程序

CATEGORY_APP_CALCULATOR

和ACTION_MAIN一起使用,用來啟動計算器應用程序

CATEGORY_APP_CALENDAR

和ACTION_MAIN一起使用,用來啟動日歷應用程序

CATEGORY_APP_CONTACTS

和ACTION_MAIN一起使用,用來啟動聯(lián)系人應用程序

CATEGORY_APP_EMAIL

和ACTION_MAIN一起使用,用來啟動郵件應用程序

CATEGORY_APP_GALLERY

和ACTION_MAIN一起使用,用來啟動圖庫應用程序

CATEGORY_APP_MAPS

和ACTION_MAIN一起使用,用來啟動地圖應用程序

CATEGORY_APP_MARKET

這個activity允許用戶瀏覽和下載新的應用程序

CATEGORY_APP_MESSAGING

和ACTION_MAIN一起使用,用來啟動短信應用程序

CATEGORY_APP_MUSIC

和ACTION_MAIN一起使用,用來啟動音樂應用程序

CATEGORY_BROWSABLE

能夠被瀏覽器安全調(diào)用的activity必須支持這個category

CATEGORY_DEFAULT

設置這個activity對于默認的action是否是一個可選的

CATEGORY_EMBED

可以運行在父activity容器內(nèi)

CATEGORY_HOME

主activity,當應用程序啟動時,它是第一個顯示的activity

CATEGORY_LAUNCHER

應該在上層的啟動列表里顯示

CATEGORY_MONKEY

這個activity可能被monkey或者其他的自動測試工具執(zhí)行

CATEGORY_OPENABLE

用來指示一個GET_CONTENT意圖只希望ContentResolver.openInputStream能夠打開URI

CATEGORY_PREFERENCE

這個activity是一個選項卡

CATEGORY_SAMPLE_CODE

作為一個簡單的代碼示例使用(一般情況下不使用)

CATEGORY_SELECTED_ALTERNATIVE

設置這個activity是否可以被認為是用戶當前選擇的數(shù)據(jù)的一個可選擇的action

CATEGORY_TAB

想要在已有的TabActivity內(nèi)部作為一個Tab使用

CATEGORY_TEST

供測試使用(一般情況不使用)

CATEGORY_UNIT_TEST

聯(lián)合測試使用

 

  1. D、data屬性 
  2. <data  android:host="string" 
  3.       android:mimeType="string" 
  4.       android:path="string" 
  5.       android:pathPattern="string" 
  6.       android:pathPrefix="string" 
  7.       android:port="string" 
  8.       android:scheme="string"/> 
  9.  
  10.  
  11. ```【1】每個<data>元素指定一個URI和數(shù)據(jù)類型(MIME類型)。 
  12. 它有四個屬性scheme、host、port、path對應于URI的每個部分:  
  13. scheme://host:port/path 
  14. scheme的值一般為"http",host為包名,port為端口號,path為具體地址。如:http://com.test.project:200/folder/etc 
  15. 其中host和port合起來構成URI的憑據(jù)(authority),如果host沒有指定,則port也會被忽略 
  16. 要讓authority有意義,scheme也必須要指定。要讓path有意義,scheme+authority也必須要指定 
  17. 2】mimeType(指定數(shù)據(jù)類型),若mimeType為'Image',則會從content Provider的指定地址中獲取image類型的數(shù)據(jù)。還有'video'啥的,若設置為video/mp4,則表示在指定地址中獲取mp4格式的video文件 
  18. 3】而pathPattern和PathPrefix主要是為了格式化path所使用的 
  19.  
  20.  
  21. ```java 
  22. 5、第四層<meta-data> 
  23. <meta-data android:name="string" 
  24.            android:resource="resource specification" 
  25.            android:value="string"/> 
  26.  
  27.  
  28. ```這是該元素的基本結構.可以包含在<activity> <activity-alias> <service> <receiver>四個元素中。 
  29. android:name 
  30. 解釋:元數(shù)據(jù)項的名字,為了保證這個名字是唯一的,采用java風格的命名規(guī)范, 
  31. 如com.woody.project.fried 
  32. android:resource 
  33. 解釋:資源的一個引用,指定給這個項的值是該資源的id。該id可以通過方法Bundle.getInt()來從meta-data中找到。 
  34. android:value 
  35. 解釋:指定給這一項的值。可以作為值來指定的數(shù)據(jù)類型并且組件用來找回那些值的Bundle方法:[getString],[getInt],[getFloat],[getString],[getBoolean] 
  36.  
  37.  
  38. ```java 
  39. 6、第三層<activity-alias>屬性 
  40. <activity-alias android:enabled=["true" | "false"
  41.                 android:exported=["true" | "false"
  42.                 android:icon="drawable resource" 
  43.                 android:label="string resource" 
  44.                 android:name="string" 
  45.                 android:permission="string" 
  46.                 android:targetActivity="string"
  47. <intent-filter/>  
  48. <meta-data/> 
  49. </activity-alias> 
  50. <activity-alias>是為activity創(chuàng)建快捷方式的,如下實例: 
  51.  
  52. <activity android:name=".shortcut"
  53.             <intent-filter> 
  54.                 <action android:name="android.intent.action.MAIN" /> 
  55.             </intent-filter> 
  56. </activity> 
  57.  <activity-alias  
  58.     android:name=".CreateShortcuts"  
  59.     android:targetActivity=".shortcut"  
  60.     android:label="@string/shortcut"
  61.     <intent-filter> 
  62.              <action android:name="android.intent.action.CREATE_SHORTCUT" /> 
  63.              <category android:name="android.intent.category.DEFAULT" /> 
  64.      </intent-filter> 
  65.  </activity-alias> 
  66.  
  67.  
  68. ```其中android.targetActivity是指向對應快捷方式的activity,如上述的shortcut(此Activity名) 
  69. android:label是指快捷方式的名稱,而快捷方式的圖標默認是給定的application圖標 
  70.  
  71.  
  72. ```java 
  73. 7、第三層<service> 
  74.  
  75.  
  76. ```【1】service與activity同級,與activity不同的是,它不能自己啟動的,運行在后臺的程序,如果我們退出應用時,Service進程并沒有結束,它仍然在后臺運行。比如聽音樂,網(wǎng)絡下載數(shù)據(jù)等,都是由service運行的 
  77. 2】service生命周期:Service只繼承了onCreate(),onStart(),onDestroy()三個方法,第一次啟動Service時,先后調(diào)用了onCreate(),onStart()這兩個方法,當停止Service時,則執(zhí)行onDestroy()方法,如果Service已經(jīng)啟動了,當我們再次啟動Service時,不會在執(zhí)行onCreate()方法,而是直接執(zhí)行onStart()方法 
  78. 3】service與activity間的通信 
  79. Service后端的數(shù)據(jù)最終還是要呈現(xiàn)在前端Activity之上的,因為啟動Service時,系統(tǒng)會重新開啟一個新的進程,這就涉及到不同進程間通信的問題了(AIDL),Activity與service間的通信主要用IBinder負責。 
  80. 4】 
  81.  
  82. ```java 
  83. <service android:enabled=["true" | "false"
  84.          android:exported[="true" | "false"
  85.          android:icon="drawable resource" 
  86.          android:label="string resource" 
  87.          android:name="string" 
  88.          android:permission="string" 
  89.          android:process="string"
  90. </service> 
  91.   

service標簽內(nèi)的屬性之前已有描述,在此不重復了~

 

  1. 8、第三層<receiver> 
  2.   

receiver的屬性與service一樣,這里就不顯示了
BroadcastReceiver:用于發(fā)送廣播,broadcast是在應用程序之間傳輸信息的一種機制,而BroadcastReceiver是對發(fā)送出來的 Broadcast進行過濾接受并響應的一類組件Android BroadcastReceiver 簡介
在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver
活動(Activity) - 用于表現(xiàn)功能

服務(Service) - 相當于后臺運行的 Activity
廣播(Broadcast) - 用于發(fā)送廣播

廣播接收器(BroadcastReceiver) - 用于接收廣播
Intent - 用于連接以上各個組件,并在其間傳遞消息
BroadcastReceiver
在Android中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發(fā)送出來的 Broadcast進行過濾接受并響應的一類組件。下面將詳細的闡述如何發(fā)送Broadcast和使用BroadcastReceiver過 濾接收的過程:
首先在需要發(fā)送信息的地方,把要發(fā)送的信息和用于過濾的信息(如Action、Category)裝入一個Intent對象,然后通過調(diào)用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent對象以廣播方式發(fā)送出去。
當Intent發(fā)送以后,所有已經(jīng)注冊的BroadcastReceiver會檢查注冊時的IntentFilter是否與發(fā)送的Intent相匹配,若 匹配則就會調(diào)用BroadcastReceiver的onReceive()方法。所以當我們定義一個BroadcastReceiver的時候,都需要 實現(xiàn)onReceive()方法。

注冊BroadcastReceiver有兩種方式:
一種方式是,靜態(tài)的在AndroidManifest.xml中用標簽生命注冊,并在標簽內(nèi)用標簽設置過濾器。
另一種方式是,動態(tài)的在代碼中先定義并設置好一個 IntentFilter對象,然后在需要注冊的地方調(diào) Context.registerReceiver()方法,如果取消時就調(diào)用Context.unregisterReceiver()方法。如果用動 態(tài)方式注冊的BroadcastReceiver的Context對象被銷毀時,BroadcastReceiver也就自動取消注冊了。
另外,若在使用sendBroadcast()的方法是指定了接收權限,則只有在AndroidManifest.xml中用標簽聲明了擁有此權限的BroascastReceiver才會有可能接收到發(fā)送來的Broadcast。
同樣,若在注冊BroadcastReceiver時指定了可接收的Broadcast的權限,則只有在包內(nèi)的AndroidManifest.xml中 用標簽聲明了,擁有此權限的Context對象所發(fā)送的Broadcast才能被這個 BroadcastReceiver所接收。
動態(tài)注冊:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(String);--為 BroadcastReceiver指定action,使之用于接收同action的廣播 registerReceiver(BroadcastReceiver,intentFilter);
一般:在onStart中注冊,onStop中取消unregisterReceiver
發(fā)送廣播消息:extends Service
指定廣播目標Action:Intent Intent = new Intent(action-String)
--指定了此action的receiver會接收此廣播
需傳遞參數(shù)(可選) putExtra();
發(fā)送:sendBroadcast(Intent);

 

  1. 9、第三層<provider>屬性 
  2. <provider android:authorities="list" 
  3.           android:enabled=["true" | "false"
  4.           android:exported=["true" | "false"
  5.           android:grantUriPermissions=["true" | "false"
  6.           android:icon="drawable resource" 
  7.           android:initOrder="integer" 
  8.           android:label="string resource" 
  9.           android:multiprocess=["true" | "false"
  10.           android:name="string" 
  11.           android:permission="string" 
  12.           android:process="string" 
  13.           android:readPermission="string" 
  14.           android:syncable=["true" | "false"
  15.           android:writePermission="string"
  16.            <grant-uri-permission/> 
  17.            <meta-data/> 
  18. </provider> 
  19.  
  20.  
  21. ```contentProvider(數(shù)據(jù)存儲) 
  22. 1】android:authorities: 
  23. 標識這個ContentProvider,調(diào)用者可以根據(jù)這個標識來找到它 
  24. 2】android:grantUriPermission: 
  25. 對某個URI授予的權限 
  26. 3】android:initOrder 
  27.  
  28.  
  29. ```java 
  30. 10、第三層<uses-library> 
  31.  
  32.  
  33. ```用戶庫,可自定義。所有android的包都可以引用 
  34.  
  35.  
  36. ```java 
  37. 11、第一層<supports-screens> 
  38. <supports-screens  android:smallScreens=["true" | "false"]  
  39.                   android:normalScreens=["true" | "false"]  
  40.                   android:largeScreens=["true" | "false"]  
  41.                   android:anyDensity=["true" | "false"] /> 
  42.  
  43.  
  44. ```這是在android1.6以后的新特性,支持多屏幕機制各屬性含義:這四個屬性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多種不同密度 
  45.  
  46.  
  47. ```java 
  48. 12、第二層<uses-configuration />與<uses-feature>性能都差不多 
  49. <uses-configuration  android:reqFiveWayNav=["true" | "false"]  
  50.                     android:reqHardKeyboard=["true" | "false"
  51.                     android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" |   "twelvekey"
  52.                     android:reqNavigation=["undefined" | "nonav" | "dpad" |  "trackball" | "wheel"
  53.                     android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] /> 
  54. <uses-feature android:glEsVersion="integer" 
  55.               android:name="string" 
  56.               android:required=["true" | "false"] /> 
  57.  
  58.  
  59. ```這兩者都是在描述應用所需要的硬件和軟件特性,以便防止應用在沒有這些特性的設備上安裝。 
  60.  
  61.  
  62. ```java 
  63. 13、第二層<uses-sdk /> 
  64. <uses-sdk android:minSdkVersion="integer" 
  65.           android:targetSdkVersion="integer" 
  66.           android:maxSdkVersion="integer"/> 
  67.  
  68.  
  69. ```描述應用所需的api level,就是版本,目前是android 2.2 = 8,android2.1 = 7,android1.6 = 4,android1.5=3在此屬性中可以指定支持的最小版本,目標版本以及最大版本 
  70.  
  71.  
  72. ```java 
  73. 14、第二層<instrumentation /> 
  74. <instrumentation android:functionalTest=["true" | "false"
  75.                  android:handleProfiling=["true" | "false"
  76.                  android:icon="drawable resource" 
  77.                  android:label="string resource" 
  78.                  android:name="string" 
  79.                  android:targetPackage="string"/> 
  80.  
  81.  
  82. ``` 定義一些用于探測和分析應用性能等等相關的類,可以監(jiān)控程序。在各個應用程序的組件之前instrumentation類被實例化 
  83. android:functionalTest(解釋:instrumentation類是否能運行一個功能測試,默認為false
  84.  
  85.  
  86. ```java 
  87. 15、<permission>、<uses-permission>、<permission-tree />、<permission-group />區(qū)別 
  88.   

最常用的當屬,當我們需要獲取某個權限的時候就必須在我們的manifest文件中聲明,此與同級,具體權限列表請看此處
通常情況下我們不需要為自己的應用程序聲明某個權限,除非你提供了供其他應用程序調(diào)用的代碼或者數(shù)據(jù)。這個時候你才需要使用 這個標簽。很顯然這個標簽可以讓我們聲明自己的權限。比如:

 

  1. <permission android:name="com.teleca.project.MY_SECURITY" . . . /> 
  2.  
  3.  
  4. ```那么在activity中就可以聲明該自定義權限了,如: 
  5.  
  6. ```java 
  7. <application . . .> 
  8.         <activity android:name="XXX" . . . > 
  9.                   android:permission="com.teleca.project.MY_SECURITY"> </activity> 
  10.  </application> 
  11.   

當然自己聲明的permission也不能隨意的使用,還是需要使用來聲明你需要該權限
就是聲明一個標簽,該標簽代表了一組permissions,而是為一組permissions聲明了一個namespace。這兩個標簽可以看之前的系列文章。

責任編輯:張葉青 來源: eoe Android開發(fā)者社區(qū)
相關推薦

2009-09-14 16:21:34

LINQ To XML

2009-11-20 13:11:44

Oracle XML數(shù)

2009-03-24 08:30:54

AndroidGoogle移動os

2009-03-24 09:17:58

驅動GSMAndroid

2009-09-28 10:39:01

Hibernate基礎

2009-09-25 14:23:39

2011-03-30 17:32:28

androidmaniAndroid開發(fā)

2009-12-01 14:06:17

靜態(tài)路由配置

2010-02-06 15:19:35

2009-06-18 14:00:51

2009-09-09 09:48:43

Linq延遲加載

2009-10-10 13:52:57

VB Update方法

2009-09-14 13:50:35

LINQ編程模型

2009-09-08 15:56:50

Linq使用Group

2010-01-06 13:50:37

.NET Framew

2014-08-04 10:52:48

AndroidMani

2009-12-02 15:52:00

Cisco路由器配置

2009-10-28 16:36:14

寬帶接入技術

2013-06-28 13:38:45

AndroidAndroidMani

2010-04-26 18:17:19

Oracle存儲過程
點贊
收藏

51CTO技術棧公眾號

天天射,天天干| 91久久久久久久久久久久久久| 日本高清在线观看视频| 成人av手机在线观看| 97色在线观看| 日本xxxxxxxxx18| 国产色99精品9i| 欧美日韩美女在线| 污视频在线免费观看一区二区三区 | 7799精品视频天天看| 99久久久久国产精品| 亚洲国产精品一区二区久| 茄子视频成人免费观看| 久热国产在线| 久久久久久久久99精品| 999国内精品视频在线| 欧美一区二区三区网站| 综合久久综合| 一区二区三区视频免费| 日本性生活一级片| 成人免费一区| 欧美日韩亚洲国产一区| 亚洲av首页在线| 奇米影视888狠狠狠777不卡| 国产麻豆视频精品| 国产精品美女在线| 日韩精品手机在线| 综合亚洲视频| 自拍偷拍免费精品| 日韩av一二区| 青草伊人久久| 欧美日韩aaaaaa| 亚洲美免无码中文字幕在线| 18视频在线观看网站| 中文字幕国产一区| 欧美精品尤物在线| 日韩中文字幕免费在线观看| 国产乱码精品一区二区三区五月婷 | 欧美一区二区三区在线观看视频| 国产极品美女高潮无套久久久| 欧美野外wwwxxx| 综合自拍亚洲综合图不卡区| 日韩中文字幕一区| 理论在线观看| 91视频在线看| 九九99久久| 亚洲精品国产一区二| 国产资源在线一区| 成人av在线网址| 亚洲一级特黄毛片| 秋霞电影一区二区| 国产精品第一页在线| 美女又爽又黄免费视频| 一区二区久久| 2024亚洲男人天堂| 国产成人精品一区二三区| 亚洲香蕉网站| 欧美精品videos| 久久久久久久久99| 亚洲夜间福利| 国内免费精品永久在线视频| 日本午夜小视频| 狠狠88综合久久久久综合网| 久久久久久91香蕉国产| 国产一级淫片免费| 在线午夜精品| 国产不卡av在线| 性高潮视频在线观看| 日韩激情视频网站| 成人黄色av网站| 国产日产亚洲系列最新| 国产成人超碰人人澡人人澡| 国产精品对白刺激久久久| 欧美一级淫片免费视频魅影视频| 成人黄页毛片网站| 久久国产精品久久| 国产51人人成人人人人爽色哟哟| 国产精品亲子乱子伦xxxx裸| 人人妻人人澡人人爽精品欧美一区| 精品麻豆一区二区三区| 一区二区三区四区视频精品免费| 亚洲 欧美 综合 另类 中字| 黑人无套内谢中国美女| 一区二区三区日| 狠狠色丁香婷综合久久| 91网免费观看| 偷拍精品一区二区三区| 久久久久国产免费免费| 在线丝袜欧美日韩制服| 亚洲奶水xxxx哺乳期| 亚洲成av人片一区二区三区| 国产a级一级片| 激情久久一区二区| 日韩视频123| 亚洲狠狠婷婷综合久久久久图片| 日韩精品dvd| 欧美另类在线观看| 一级片免费在线播放| 狠狠色综合日日| 国产精品一区二区av| 裸体xxxx视频在线| 伊人性伊人情综合网| 欧美日韩在线一| 欧美少妇激情| 亚洲激情视频网| 免费一级suv好看的国产网站| 欧美色综合网| 国产精品看片资源| 人妻一区二区三区免费| 国产精品天干天干在线综合| 亚洲国产精品无码av| 成人免费av电影| 精品久久久久99| 国精产品一区一区| 国产免费成人| 97超碰人人模人人爽人人看| 蝌蚪视频在线播放| 亚洲成人一区在线| 天天色天天干天天色| 久操精品在线| 久久久久久久久中文字幕| 中文字幕欧美人妻精品| 97精品超碰一区二区三区| 特色特色大片在线| 欧美xxxx网站| 亚洲欧美国产va在线影院| 久久99久久久| 国产在线视视频有精品| 日本高清一区| a欧美人片人妖| 精品国产91九色蝌蚪| 日韩高清dvd碟片| 蜜臀久久久久久久| 欧美中日韩一区二区三区| 搞黄网站在线看| 日韩天堂在线观看| 欧美日韩午夜视频| 另类成人小视频在线| 奇米视频888战线精品播放| 国产精品高颜值在线观看| 日韩欧美一级二级| 农村妇女精品一区二区| 毛片不卡一区二区| 日韩亚洲欧美精品| 性欧美freehd18| 亚洲视频综合网| 国产suv精品一区二区33| 99精品一区二区| 国产av天堂无码一区二区三区| 秋霞影院一区| 久久久久久97| 欧美视频久久久| 亚洲v中文字幕| 美女黄色一级视频| 一区二区三区精品视频在线观看| 国产精品日韩一区二区三区 | 欧美理论片在线观看| 国产又粗又黄又爽的视频| 国产精品亲子乱子伦xxxx裸| 日韩一区二区三区久久| 欧美xxxxx视频| 成人黄色免费在线观看| 黄色成人在线| 日韩一区二区免费在线电影| 九九热精品在线观看| 国产不卡一区视频| 日韩av在线播放不卡| 精品丝袜久久| 青草成人免费视频| melody高清在线观看| 欧美日韩一区在线观看| 我要看黄色一级片| 国产成人免费视频网站| 久久这里只有精品23| 免费观看成人www动漫视频| 18性欧美xxxⅹ性满足| 欧洲天堂在线观看| 欧美视频三区在线播放| 中文字幕资源站| 国产麻豆成人精品| 黄色网页免费在线观看| av在线不卡免费观看| 91亚洲人电影| wwwwxxxx在线观看| 亚洲美女黄色片| 一女二男一黄一片| 五月婷婷久久丁香| 国产午夜精品久久久久久久久| 国产一区三区三区| 热99这里只有精品| 色琪琪久久se色| 国产高清精品一区| 秋霞国产精品| 欧美另类99xxxxx| 激情小视频在线| 欧美精品久久一区| 中文字幕亚洲精品一区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久女同性恋中文字幕| www.亚洲高清| 亚洲欧洲日本一区二区三区| 日韩欧美一区二区在线观看| 日本成人精品| 国产精品第一视频| 9999精品成人免费毛片在线看| 中文字幕不卡在线视频极品| 亚洲av永久无码国产精品久久| 91黄色小视频| 国产第一页在线播放| 欧美国产视频在线| 国产二级一片内射视频播放| 另类综合日韩欧美亚洲| 国产美女三级视频| 欧美日韩专区| 亚洲午夜精品一区二区| 欧美美女在线直播| 亚洲一区二区三区四区视频 | 欧美精品一卡| 欧美一区二区三区四区在线观看地址| 麻豆国产一区| 国产精品爽黄69| 一区二区三区短视频| 九九久久久久99精品| www亚洲人| 日韩精品视频在线播放| 国产成人三级一区二区在线观看一| 日韩欧美中文在线| 国产一级特黄a高潮片| 亚洲少妇中出一区| 欧美成人一区二区在线| 亚洲网站免费| 国产成人免费av电影| 美女搞黄视频在线观看| 欧美精品日韩三级| 三区四区在线视频| 国产亚洲欧美日韩精品| 色一情一乱一区二区三区| 欧美一区2区视频在线观看| 中文字幕人妻一区二区在线视频| 欧美性色xo影院| 日本特黄一级片| 亚洲综合图片区| 欧美偷拍第一页| 亚洲色欲色欲www| 手机在线中文字幕| 国产精品久久久久久久久久免费看| 久久美女免费视频| 久久精品无码一区二区三区| 免费看黄色aaaaaa 片| 99riav久久精品riav| 日韩精品视频一区二区| 成人黄色在线视频| 超碰男人的天堂| av在线免费不卡| 男女黄床上色视频| 久久久久久免费毛片精品| 不卡一区二区在线观看| 久久蜜桃av一区精品变态类天堂| 在线免费观看成年人视频| 久久噜噜亚洲综合| 极品人妻videosss人妻| 日本一区二区免费在线| 成人黄色短视频| 1024成人网| 九九在线观看视频| 亚洲一级电影视频| 亚洲免费在线观看av| 日韩欧美国产一区二区| 波多野结衣视频网址| 欧美群妇大交群中文字幕| 国产精品毛片一区二区在线看舒淇| 91精品国产综合久久久久久漫画 | 欧美一二三四五区| 国产一区二区三区日韩精品 | 日本大香伊一区二区三区| 国产成人无码专区| 欧美三级乱人伦电影| 91国内精品视频| 日韩免费一区二区| 婷婷在线免费观看| 国产一区二区三区中文| 色开心亚洲综合| 久久99热精品| 极品美女一区| 成人午夜激情免费视频| 欧美巨大xxxx| 杨幂一区欧美专区| 国产精品啊啊啊| 国产极品美女高潮无套久久久| 麻豆传媒一区二区三区| 四虎永久免费观看| 国产偷国产偷精品高清尤物| 黄色一级大片在线免费观看| 亚洲高清视频的网址| 国产一级片免费视频| 欧美一级专区免费大片| 理论视频在线| 欧美夫妻性生活视频| 亚洲成a人片| 91中文字精品一区二区| 国产一区二区三区电影在线观看| av中文字幕av| 天堂成人免费av电影一区| 特级黄色片视频| 国产网站一区二区三区| 日本少妇bbwbbw精品| 欧美日本不卡视频| 巨骚激情综合| 97久久国产精品| 精品一区二区三区免费看| 欧美日韩亚洲免费| 欧美日韩免费观看一区=区三区| 粉嫩虎白女毛片人体| 成人精品一区二区三区中文字幕| 日本不卡一区视频| 日韩欧美中文在线| 欧美一级视频免费| 美女少妇精品视频| 激情久久一区二区| 日本一区视频在线观看| 亚洲国内欧美| 久久久久久国产精品日本| 国产欧美精品国产国产专区| 97免费在线观看视频| 日韩欧美国产三级电影视频| 在线观看国产原创自拍视频| 欧美亚洲成人网| 国产精品巨作av| 美女av免费观看| 九九国产精品视频| 蜜桃av乱码一区二区三区| 高跟丝袜欧美一区| 欧日韩在线视频| 九九久久国产精品| 国产情侣一区在线| 一区二区不卡在线视频 午夜欧美不卡'| 国产精品久久国产愉拍| 亚洲中文字幕无码一区| 一区二区三区在线观看国产 | 精品久久国产字幕高潮| www久久日com| 成人网欧美在线视频| 国产精品7m凸凹视频分类| 亚洲综合欧美激情| 中文字幕乱码久久午夜不卡| 国产在线一级片| 亚洲新声在线观看| 欧美不卡高清一区二区三区| 欧美激情视频一区二区三区| 亚洲免费婷婷| 丰满少妇一区二区| 91精品办公室少妇高潮对白| 国产午夜精品一区理论片| 日韩免费av在线| 成人在线免费视频观看| 在线视频日韩一区| 国产精品无人区| 国产精品国产三级国产普通话对白| 色香阁99久久精品久久久| 亚洲精品成a人ⅴ香蕉片| 最新国产精品久久| 国产精品一区二区你懂的| 九九视频免费在线观看| 亚洲风情亚aⅴ在线发布| 色综合桃花网| 日韩免费av一区二区三区| 毛片av一区二区| 欧美日韩在线视频免费播放| 亚洲成人激情在线观看| 在线观看爽视频| 日韩欧美在线电影| 蜜桃视频在线观看一区| 午夜国产福利一区二区| 精品国产制服丝袜高跟| 美女高潮在线观看| 亚洲美女网站18| 国产高清亚洲一区| 国产成人愉拍精品久久| 国产香蕉97碰碰久久人人| 一级欧美视频| 草b视频在线观看| 久久精品亚洲乱码伦伦中文| 国产一区二区在线视频聊天| 欧美猛男性生活免费| 日韩伦理一区二区三区| 日韩肉感妇bbwbbwbbw| 亚洲免费观看在线视频| 污污网站免费在线观看| 国产精品视频永久免费播放| 国产精品观看| 日本高清黄色片| 亚洲精品在线电影| 欧美精品资源| 日本黄色片一级片| 国产午夜亚洲精品不卡| 亚洲国产精品视频在线| 国产精品精品久久久| 激情综合自拍| www.xx日本| 亚洲理论在线a中文字幕|