android学习笔记30——AndroidMainfest.xml
Manifest.xml文件的職責(zé):
指定APP的包名.
聲明四大組件, 以及啟動方式.
指定APP運行的進(jìn)程名稱.
指定APP權(quán)限.
指定最小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>
全部標(biāo)簽:
<action>
<activity>
<activity-alias> ==》activity-alias是android里為了重復(fù)使用Activity而設(shè)計的。
<application>
<category>
<data>
<grant-uri-permission>
<instrumentation>
==》Instrumentation和Activity有點類似,只不過Activity是需要一個界面的,而Instrumentation并不是這樣的,我們可以將它理解為一種沒有圖形界面的,具有啟動能力的,用于監(jiān)控其他類(用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文件規(guī)則:
1.標(biāo)簽: 只有<manifest>和<application>是必須的, 它們倆只能被聲明一次. 其余都是可選標(biāo)簽.
在同一級別的標(biāo)簽沒有先后順序的要求, 不過這里有一個例外:<activity-alias>必須緊跟<activity>.
2.屬性: 理論上講所有的屬性都是可選的. 除了<application>標(biāo)簽外, 其他標(biāo)簽的屬性都以android:前綴開頭.
3.聲明類名: 很多標(biāo)簽都對應(yīng)一個Java的對象, 包括<application>以及四大組件.
Android規(guī)定使用name屬性來為標(biāo)簽指定一個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會創(chuàng)建一個被指定的子類的實例, 如果沒指定的話, 那么Android會創(chuàng)建一個組件基類的實例.
4.單個屬性多個值: 有些屬性可以接收多個值, 通常我們會這樣使用重復(fù)的屬性:
<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.使用字符串: 當(dāng)屬性值是字符串的時候, 使用轉(zhuǎn)義字符必須加”\\”, 比如”\\n”用于換行, “\\uxxxx”用于Unicode
Manifest.xml的文件特性:
1.Intent Filters:
Intent是啟動Android組件的重要工具,Intent意為”意圖”, 是啟動組件的”信使”, 它包括需要傳送的數(shù)據(jù)(data), 處理action的組件的種類(category)和其它的相關(guān)說明. Android根據(jù)Intent來啟動一個對應(yīng)的組件, 然后將Intent傳遞給它.
每個組件可以包含多個<Intentfilter>, 它告訴Android自己想要接收的Intent長啥樣. 當(dāng)一個Intent明確指定了組件名稱的時候(顯示啟動activity), Intent filter就不再發(fā)揮作用. 但是對于不指定名字的Intent(隱式啟動activity),那么它只能啟動符合的Intent filter的組件.
2.圖標(biāo)和標(biāo)簽:
很多標(biāo)簽都有圖標(biāo)(icon)和標(biāo)簽(label)屬性, 它們分別指定了小圖標(biāo)和文字標(biāo)簽給用戶. 有些還支持更長的description屬性可以顯示更長的文字信息. 如果一個標(biāo)簽包含了icon和label屬性, 那么它們會成為子標(biāo)簽的默認(rèn)屬性. 所以只要設(shè)置了<application>的icon和label屬性, 那么它們會成為application內(nèi)所有組件的默認(rèn)icon和label屬性.
3.權(quán)限(permission): 權(quán)限是限制APP訪問指定數(shù)據(jù)的約束性標(biāo)簽. 它用來指定APP擁有的權(quán)限. 是一串字符串, 如:
android.permission.CALL_EMERGENCY_NUMBERS ==>撥打緊急號碼
android.permission.READ_OWNER_DATA ==>允許程序讀取所有者的數(shù)據(jù)
android.permission.SET_WALLPAPER ==>設(shè)置壁紙
android.permission.DEVICE_POWER ==>設(shè)備電源權(quán)限
上述四個分別對應(yīng)撥打緊急號碼, 允許程序讀取所有者的數(shù)據(jù), 設(shè)置壁紙, 設(shè)備電源權(quán)限. 如果APP想訪問某個被permission保護(hù)的權(quán)限, 那么必須用<user-permission>標(biāo)簽申請該權(quán)限. 在安裝的時候, 系統(tǒng)將會檢查這些權(quán)限, 并且將敏感權(quán)限提示給用戶,由用戶決定是否安裝.
一款A(yù)PP也可以通過權(quán)限管理來保護(hù)自己的組件, 可以使用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保護(hù)的Activity的組件, 都得使用<user-permission>來聲明該權(quán)限, 就算在自己的APP內(nèi)部也是如此.
<permission-tree>標(biāo)簽用于為同一組permission聲明命名空間.<permission-group>則為一組permission定義一個label. 它只影響權(quán)限向用戶展示的方式. <permission-group>僅僅用于給出一個組的名字, 并不指定權(quán)限是如何分組的.決定permission如何分組的是<permission>中的permissionGroup屬性.
4.庫(Libraries):
每個Android APP都會與Android默認(rèn)的基礎(chǔ)庫連接, 包括基礎(chǔ)的類, 比如Activity, Service, Intent, Button, View等. 然而有些時候我們也需要為我們的APP連接外部的庫, 這些庫需要<uses-library>標(biāo)簽指定.
?
轉(zhuǎn)載于:https://www.cnblogs.com/YYkun/p/5833182.html
總結(jié)
以上是生活随笔為你收集整理的android学习笔记30——AndroidMainfest.xml的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NDTTS-II变压器综合试验系统
- 下一篇: android手机录屏多少fps,如何在