android学习笔记30——AndroidMainfest.xml
Manifest.xml文件的職責:
指定APP的包名.
聲明四大組件, 以及啟動方式.
指定APP運行的進程名稱.
指定APP權限.
指定最小API版本.
指定需要連接的庫.
Manifest.xml的格式:
<?xml version="1.0" encoding="utf-8"?> 
 <manifest> 
 <uses-permission /> 
 <permission /> 
 <permission-tree /> 
 <permission-group /> 
 <instrumentation /> 
 <uses-sdk /> 
 <uses-configuration /> 
 <uses-feature /> 
 <supports-screens /> 
 <compatible-screens /> 
 <supports-gl-texture /> 
 <application> 
 <activity> 
 <intent-filter> 
 <action /> 
 <category /> 
 <data /> 
 </intent-filter> 
 <meta-data /> 
 </activity> 
 <activity-alias> 
 <intent-filter> . . . </intent-filter> 
 <meta-data /> 
 </activity-alias> 
 <service> 
 <intent-filter> . . . </intent-filter> 
 <meta-data/> 
 </service> 
 <receiver> 
 <intent-filter> . . . </intent-filter> 
 <meta-data /> 
 </receiver> 
 <provider> 
 <grant-uri-permission /> 
 <meta-data /> 
 <path-permission /> 
 </provider> 
 <uses-library /> 
 </application> 
</manifest> 
全部標簽:
<action>
<activity>
<activity-alias> ==》activity-alias是android里為了重復使用Activity而設計的。
<application>
<category>
<data>
<grant-uri-permission>
<instrumentation> 
 ==》Instrumentation和Activity有點類似,只不過Activity是需要一個界面的,而Instrumentation并不是這樣的,我們可以將它理解為一種沒有圖形界面的,具有啟動能力的,用于監控其他類(用Target Package聲明)的工具類。
<intent-filter>
<manifest>
<meta-data>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>
Manifest.xml文件規則:
1.標簽: 只有<manifest>和<application>是必須的, 它們倆只能被聲明一次. 其余都是可選標簽. 
 在同一級別的標簽沒有先后順序的要求, 不過這里有一個例外:<activity-alias>必須緊跟<activity>.
2.屬性: 理論上講所有的屬性都是可選的. 除了<application>標簽外, 其他標簽的屬性都以android:前綴開頭.
3.聲明類名: 很多標簽都對應一個Java的對象, 包括<application>以及四大組件. 
 Android規定使用name屬性來為標簽指定一個Java類。
比如下面是為一個Service指定類名:
<manifest . . . > 
 <application . . . > 
 <service android:name="com.example.project.SecretService" . . . > 
 . . . 
 </service> 
 . . . 
 </application> 
</manifest> 
如果類所在名跟包名一樣, 則可以簡寫成一個”.”, 比如:
<manifest package="com.example.project" . . . > 
 <application . . . > 
 <service android:name=".SecretService" . . . > 
 . . . 
 </service> 
 . . . 
 </application> 
</manifest> 
啟動一個組件的時候, Android會創建一個被指定的子類的實例, 如果沒指定的話, 那么Android會創建一個組件基類的實例.
4.單個屬性多個值: 有些屬性可以接收多個值, 通常我們會這樣使用重復的屬性:
<intent-filter . . . > 
 <action android:name="android.intent.action.EDIT" /> 
 <action android:name="android.intent.action.INSERT" /> 
 <action android:name="android.intent.action.DELETE" /> 
 . . . 
</intent-filter> 
5.引用資源: 有些屬性值需要我們引用資源文件, 跟之前描述資源文件的用法一樣, 
只需要使用@[package:]type:name格式來引用資源即可:<activity android:icon="@drawable/smallPic" . . . > 
6.使用字符串: 當屬性值是字符串的時候, 使用轉義字符必須加”\\”, 比如”\\n”用于換行, “\\uxxxx”用于Unicode
Manifest.xml的文件特性:
1.Intent Filters: 
Intent是啟動Android組件的重要工具,Intent意為”意圖”, 是啟動組件的”信使”, 它包括需要傳送的數據(data), 處理action的組件的種類(category)和其它的相關說明. Android根據Intent來啟動一個對應的組件, 然后將Intent傳遞給它.
每個組件可以包含多個<Intentfilter>, 它告訴Android自己想要接收的Intent長啥樣. 當一個Intent明確指定了組件名稱的時候(顯示啟動activity), Intent filter就不再發揮作用. 但是對于不指定名字的Intent(隱式啟動activity),那么它只能啟動符合的Intent filter的組件. 
2.圖標和標簽: 
很多標簽都有圖標(icon)和標簽(label)屬性, 它們分別指定了小圖標和文字標簽給用戶. 有些還支持更長的description屬性可以顯示更長的文字信息. 如果一個標簽包含了icon和label屬性, 那么它們會成為子標簽的默認屬性. 所以只要設置了<application>的icon和label屬性, 那么它們會成為application內所有組件的默認icon和label屬性.
3.權限(permission): 權限是限制APP訪問指定數據的約束性標簽. 它用來指定APP擁有的權限. 是一串字符串, 如:
android.permission.CALL_EMERGENCY_NUMBERS ==>撥打緊急號碼
android.permission.READ_OWNER_DATA ==>允許程序讀取所有者的數據
android.permission.SET_WALLPAPER ==>設置壁紙
android.permission.DEVICE_POWER ==>設備電源權限
上述四個分別對應撥打緊急號碼, 允許程序讀取所有者的數據, 設置壁紙, 設備電源權限. 如果APP想訪問某個被permission保護的權限, 那么必須用<user-permission>標簽申請該權限. 在安裝的時候, 系統將會檢查這些權限, 并且將敏感權限提示給用戶,由用戶決定是否安裝.
一款APP也可以通過權限管理來保護自己的組件, 可以使用Android提供的permissions(在android.Manifest.permission中列出), 也可以使用其它APP定義的permission,還可以自己定義. 
定義一個permission的代碼如下:
<manifest . . . > 
 <permission android:name="com.example.project.DEBIT_ACCT" . . . /> 
 <uses-permission android:name="com.example.project.DEBIT_ACCT" /> 
 . . . 
 <application . . .> 
 <activity android:name="com.example.project.FreneticActivity" 
 android:permission="com.example.project.DEBIT_ACCT" 
 . . . > 
 . . . 
 </activity> 
 </application> 
</manifest> 
這里需要注意的是:
所有需要訪問被DEBIT_ACCT保護的Activity的組件, 都得使用<user-permission>來聲明該權限, 就算在自己的APP內部也是如此.
<permission-tree>標簽用于為同一組permission聲明命名空間.<permission-group>則為一組permission定義一個label. 它只影響權限向用戶展示的方式. <permission-group>僅僅用于給出一個組的名字, 并不指定權限是如何分組的.決定permission如何分組的是<permission>中的permissionGroup屬性.
4.庫(Libraries): 
每個Android APP都會與Android默認的基礎庫連接, 包括基礎的類, 比如Activity, Service, Intent, Button, View等. 然而有些時候我們也需要為我們的APP連接外部的庫, 這些庫需要<uses-library>標簽指定.
?
轉載于:https://www.cnblogs.com/YYkun/p/5833182.html
總結
以上是生活随笔為你收集整理的android学习笔记30——AndroidMainfest.xml的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: NDTTS-II变压器综合试验系统
 - 下一篇: 计算机农业应用与3S技术论文,3S技术在