成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

專家專欄:AndroidManifest.xml文件詳解

原創
移動開發 Android
AndroidManifest.xml文件是Android系統重要的權限申請和定義配置文件,程序員在開發時需要通過其來向系統預先定義和申請應用程序運行所需要的權限。靈活、安全地使用該配置文件是Android安全保障的一個不可忽視的方面,本文對AndroidManifest文件進行詳細介紹。

【51CTO獨家特稿】本文為安全專家李洋的最新一篇專欄文章《AndroidManifest.xml文件詳解》。AndroidManifest.xml是一個跟安全相關的配置文件,該配置文件是Android安全保障的一個不可忽視的方面,本文對AndroidManifest文件進行詳細介紹。

以下為全部內容:

了解AndroidManifest.xml文件的主要用途

AndroidManifest.xml主要包含以下功能:

  1. 說明application的java 數據包,數據包名是application的唯一標識;
  2. 描述application的component;
  3. 說明application的component運行在哪個process下;
  4. 聲明application所必須具備的權限,用以訪問受保護的部分API,以及與其他application的交互;
  5. 聲明application其他的必備權限,用以component之間的交互;
  6. 列舉application運行時需要的環境配置信息,這些聲明信息只在程序開發和測試時存在,發布前將被刪除;
  7. 聲明application所需要的AndroidAPI的最低版本級別,例如1.0,1.1,1.5等;
  8. 列舉application所需要鏈接的庫;

 

熟悉AndroidManifest.xml文件的結構及元素

AndroidManifest.xml文件的結構、元素,以及元素的屬性,可以在AndroidSDK文檔中查看詳細說明。而在看這些眾多的元素以及元素的屬性前,需要先了解一下這些元素在命名、結構等方面的規則:

  1. 元素:在所有的元素中只有<manifest>和<application>是必需的,且只能出現一次。如果一個元素包含有其他子元素,必須通過子元素的屬性來設置其值。處于同一層次的元素,這些元素的說明是沒有順序的。
  2. 屬性:按照常理,所有的屬性都是可選的,但是有些屬性是必須設置的。那些真正可選的屬性,即使不存在,其也有默認的數值項說明。除了根元素<manifest>的屬性,所有其他元素屬性的名字都是以android:前綴的;
  3. 定義類名:所有的元素名都對應其在SDK中的類名,如果你自己定義類名,必須包含類的數據包名,如果類與application處于同一數據包中,可以直接簡寫為“.”;
  4. 多數值項:如果某個元素有超過一個數值,這個元素必須通過重復的方式來說明其某個屬性具有多個數值項,且不能將多個數值項一次性說明在一個屬性中;
  5. 資源項說明:當需要引用某個資源時,其采用如下格式:@[package:]type:name。例如<activity android:icon=”@drawable/icon ” . . .>
  6. 字符串值:類似于其他語言,如果字符中包含有字符“\”,則必須使用轉義字符“\\”;

 

下面結合cookie實例中的AndroidManifest.xml文件來說明一下,原XML文件如下:

  1. <?xml version=”1.0″ encoding=”utf-8″?> 
  2. <manifest xmlns:android=”http://schemas.android.com/apk/res/android” 
  3. package=”moandroid.cookie” 
  4. android:versionCode=”1″ 
  5. android:versionName=”1.0″> 
  6. <application android:icon=”@drawable/icon” android:label=”@string/app_name”> 
  7. <activity android:name=”.cookie” android:label=”@string/app_name”> 
  8. <intent-filter> 
  9. <action android:name=”android.intent.action.MAIN” /> 
  10. <category android:name=”android.intent.category.LAUNCHER” /> 
  11. </intent-filter> 
  12. </activity> 
  13. </application> 
  14. <uses-sdk android:minSdkVersion=”3″ /> 
  15. </manifest> 

除了頭部的XML信息說明外,首先是manifest項(也就是根節點),其屬性包括:schemas URL地址、包名(moandroid.cookie),以及程序的版本說明。其次是manifest的子節點application,其屬性包括:程序圖標、程序名稱。前面帶有@表示引用資源,例如:@drawable/icon表示引用的是drawable資源中的icon,可以在其源工程的res/drawable中找到。然后就是application的子節點activity,其屬性包括:activity的名稱、activity的標簽名,其子節點intent-filter則是對activity的說明。

而在intent-filter中,actionandroid:name=”android.intent.action.MAIN”和categoryandroid:name=”android.intent.category.LAUNCHER”用以說明程序啟動時的入口activity是哪個。如果這兩個屬性值中分別含有MAIN和LAUNCHER,則說明它就是啟動程序時的入口活動。uses-sdkandroid:minSdkVersion=”3″說明程序使用的Android SDK的最低版本,其中1表示Android1.0,2表示Android 1.1,而3則表示Android1.5。

如何進行應用程序權限申請

如下所示,文中黑體標記的部分為應用程序權限申請內容:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.      package="cn.com.fetion.android" 
  4.      android:versionCode="1" 
  5.      android:versionName="1.0.0"> 
  6.    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
  7.        <activity android:name=".welcomActivity" 
  8.                   android:label="@string/app_name"> 
  9.             <intent-filter> 
  10.                 <action android:name="android.intent.action.MAIN" /> 
  11.                 <category android:name="android.intent.category.LAUNCHER" /> 
  12.             </intent-filter> 
  13.         </activity> 
  14.    </application> 
  15.   <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
  16. </manifest> 

如上述文件描述中加下劃線的斜體部分,該文件的作用是說明該軟件需要發送短信的功能。

Android定義了百余種permission,可供開發人員使用,具體詳見網址

自定義權限

在文件中,用戶還可以自定義權限。permission就是自定義權限的聲明,可以用來限制app中特殊組件,特性與app內部或者和其他app之間訪問。寫了一個引用自定義權限的例子,在安裝app的時候,提示權限:

定義權限如下:

  1. <permission android:label="”自定義權限”"  
  2.     android:description=”@string/test”  
  3.     android:name=”com.example.project.TEST”  
  4.     android:protectionLevel=”normal”  
  5.     android:icon=”@drawable/ic_launcher”> 

聲明的含義如下;

  • android:label:權限名字,顯示給用戶的,值可是一個string數據,例如這里的“自定義權限”。
  • android:description:比label更長的對權限的描述。值是通過resource文件中獲取的,不能直接寫string值,例如這里的”@string/test”。
  • android:name:權限名字,如果其他app引用該權限需要填寫這個名字。
  • android:protectionLevel:權限級別,分為4個級別:
    • normal:低風險權限,在安裝的時候,系統會自動授予權限給application。
    • dangerous:高風險權限,系統不會自動授予權限給app,在用到的時候,會給用戶提示。
    • signature:簽名權限,在其他app引用聲明的權限的時候,需要保證兩個app的簽名一致。這樣系統就會自動授予權限給第三方app,而不提示給用戶。
    • signatureOrSystem:這個權限是引用該權限的app需要有和系統同樣的簽名才能授予的權限,一般不推薦使用。

 【51CTO.com獨家特稿,非經授權謝絕轉載,合作媒體轉載請注明原文作者及出處!】

責任編輯:佚名 來源: 51CTO.com
相關推薦

2014-08-04 10:52:48

AndroidMani

2013-06-28 13:38:45

AndroidAndroidMani

2011-03-30 17:32:28

androidmaniAndroid開發

2013-12-04 10:21:38

AndroidAndroidMani

2012-01-11 16:02:56

Android 4.0Launcher源碼分析

2012-02-13 12:47:41

Android 4.0Launcher源碼分析

2012-02-02 15:56:48

Android 4.0Launcher源碼分析

2012-07-23 13:22:42

Intent Filt安全Android

2011-08-01 13:35:08

Android安全框架權限

2012-09-27 09:25:50

2011-09-06 13:56:43

李洋iOS安全機制

2012-07-04 09:07:40

2012-07-16 10:21:48

Android進程線程

2011-08-29 13:52:15

李洋Android應用

2011-08-12 09:06:48

Android系統應用程序

2011-08-22 08:53:17

Android啟動過程李洋

2023-08-31 07:55:21

Android系統壓縮處理

2010-05-28 17:30:58

SVN分支

2023-11-17 08:23:10

Android開發

2012-02-15 10:05:02

Linux命令行
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产99久久精品一区二区永久免费 | www国产成人免费观看视频 | 国产午夜三级一区二区三 | 国产美女在线免费观看 | 国产探花在线精品一区二区 | 亚洲精品视频在线看 | 国产成人综合一区二区三区 | 国产二区av | 亚洲精品日韩综合观看成人91 | 久久久青草婷婷精品综合日韩 | 日韩一二区在线观看 | 久久国产精品免费视频 | 国产精品免费小视频 | 一区福利视频 | 久久精品一区二区三区四区 | 精品在线一区 | 久久久久国产一区二区三区四区 | 日韩有码一区二区三区 | 中文字幕av第一页 | 日韩在线观看网站 | 男人av在线播放 | 免费色网址 | 一区二区不卡视频 | 成人黄色av网址 | 91电影在线| 欧美精品在线播放 | 毛片免费观看视频 | 亚洲欧洲日本国产 | 九九热在线精品视频 | 粉嫩一区二区三区四区公司1 | 日韩一区二区在线观看 | 中文字幕一区在线观看视频 | 日韩中文电影 | 在线观看成人免费视频 | 久久国产一区二区三区 | 欧美精品片 | 999热精品视频 | 日本久草| 成人免费视频播放 | 99精品国产一区二区青青牛奶 | 一级黄色影片在线观看 |