Android Manifest介绍(二)

前言

此文章是接上篇文章所写,是解释有关Android Mainfest文件中个标签的。因为osChina不能用Markdown显示表格,所以想了解uses-permission的值的人,请看我的个人博客。

path-permission

这个标签用来定义一个路径和相应的权限,你只有在具有它所定义的权限的时候,你才能访问该路径。

<path-permission 
    android:pathPrefix="/fyales"
    android:permission="fyales.provider.permission"
/>

在上面的例子中,你必须具有fyales.provider.permission权限,你才能访问/fayles目录下的数据。

permission

permission标签算得上一个比较常用的标签了,它主要是为了限制内部组件(Activity等)或其他应用的访问,具体语法如下:

<permission android:description="string resource"
        android:icon="drawable resource"
        android:label="string resource"
        android:name="string"
        android:permissionGroup="string"
        android:protectionLevel=["normal" | "dangerous" | 
                                 "signature" | "signatureOrSystem"] />

android:name需要为该permisson定义唯一的名字,android:permissionGroup定义了它属于哪一个权限组,而android:protectionLevel是定义了该应用程序向访问其数据的应用程序所提供的安全等级,默认为normal。

permission-group

permission-group是为相同的权限分类的,它本身不声明权限,permission可以通过permissonGroup属性将自己加入某一特定的permission-group。语法如下:

<permission-group android:description="string resource"
              android:icon="drawable resource"
              android:label="string resource"
              android:name="string" />

permission-tree

声明了一个权限的命名空间,同样的,该标签本身不添加权限,它只是为了动态的添加Permission。并且这些权限必须以Permission开头(PackageManager.addPermission())。

<permission-tree android:icon="drawable resource"
             android:label="string resource" 
             android:name="string" />

android:name必须要遵循JAVA命名规范来保证命名唯一,所以名字必须要有两个点以上进行分隔,比如com.fyales.test是可以的,但是com.fyales就是不允许的。

provider

声明Content Provider组件。Content provider是ContentProvider的子类,这个ContentProvider提供了对由应用管理的数据的结构化访问。在应用中的所有content provider都必须在manifest文件中通过 元素进行声明;否则系统就不知道它也不会运行它。

<provider android:authorities="list"
      android:enabled=["true" | "false"]
      android:exported=["true" | "false"]
      android:grantUriPermissions=["true" | "false"]
      android:icon="drawable resource"
      android:initOrder="integer"
      android:label="string resource"
      android:multiprocess=["true" | "false"]
      android:name="string"
      android:permission="string"
      android:process="string"
      android:readPermission="string"
      android:syncable=["true" | "false"]
      android:writePermission="string" >
. . .
</provider>

android:authorities类似我们所说的URL的www.baidu.com,它定义了provider本身,你还可以定义多个authorities。两个之间用逗号隔开,比如你用此URL进行访问

    content://com.example.project.healthcareprovider/nurses/rn

那么com.example.project.healthcareprovider就是它的authority。

android:grantUriPermission。前面已经说过,这是为没有访问权限的应用设置的,它如果设置为true的话,就会允许没有权限的应用临时访问数据,否则你必须要有相应的权限才能访问数据。
android:initOrder。初始化顺序,数字越大越优先。
android:permission:客户端读写content provider数据所需要权限的名称,优先级小于readPermission和writePermission。
android:writePermission:客户端写数据时所需要的权限
android:readPermission:客户端读数据时所需要的权限。

receiver

定义接受广播的receiver。应用非常广泛,个人感觉,仅次于Activity。

<receiver android:enabled=["true" | "false"]
      android:exported=["true" | "false"]
      android:icon="drawable resource"
      android:label="string resource"
      android:name="string"
      android:permission="string"
      android:process="string" >
. . .
</receiver>

android:exported:定义此Receiver是否可以接受外部的消息。android:permission为了给这个broadcast receiver发送消息所必须具备的权限的名称。android:process定义了这个broadcast receiver运行的进程的名称。默认的情况是应用的所有组件都应当运行在由这个应用创建的默认的进程中,和应用的包名一样。

service

四大组件之一,没啥好说的。

<service android:enabled=["true" | "false"]
     android:exported=["true" | "false"]
     android:icon="drawable resource"
     android:isolatedProcess=["true" | "false"]
     android:label="string resource"
     android:name="string"
     android:permission="string"
     android:process="string" >
. . .
</service>

supports-gl-texture

这个元素用于声明一个应用程序所支持的GL纹理压缩格式。这个是让你的应用程序支持你所定义的纹理,各个平台支持的并不尽相同。这里有这个属性的详细介绍,个人觉得用处不大,感兴趣的人请点击这里。这里做了部分摘抄:

一个应用程序支持一种纹理压缩格式,如果应用程序提供了用该格式压缩纹理资源的能力,那么一旦应用程序被安装在设备上,应用程序就能够从.apk文件的内部提供本地的压缩资源,或者在运行时从服务器上下载它们。

每个<supports-gl-texture>元素用android:name属性明确的声明一个所支持的纹理压缩格式。如果应用程序支持多种纹理压缩格式,可以声明多个<supports-gl-texture>元素,例如:

<supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
<supports-gl-texture android:name="GL_OES_compressed_paletted _texture" />

被声明的<supports-gl-texture>是一种信息,这就意味着应用程序在安装时,系统本身并不检查这个元素,以确保与设备的支持相匹配。但是,其他的服务(如Google Play)或应用程序能够检查你的应用程序的<supports-gl-texture>的声明,把它作为与你的应用程序进行交互和处理的一部分。由于这个原因,在你的应用程序中声明所有支持的纹理压缩格式的能力是至关重要的。

supports-screens

定义你的应用程序所支持的应用程序。

<supports-screensandroid:resizeable=["true"|"false"]
              android:smallScreens=["true" | "false"]
              android:normalScreens=["true" | "false"]
              android:largeScreens=["true" | "false"]
              android:xlargeScreens=["true" | "false"]
              android:anyDensity=["true" | "false"]
              android:requiresSmallestWidthDp="integer"
              android:compatibleWidthLimitDp="integer"
              android:largestWidthLimitDp="integer"/>

uses-configuration

这个标签用于指定该应用程序所需要的硬件和软件功能,感觉这个标签实用性不大。

<uses-configurationandroid:reqFiveWayNav=["true" | "false"] 
                android:reqHardKeyboard=["true" | "false"]
                android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
                android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
                android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />

uses-feature

定义需要被应用程序单独使用的硬件或者软件(这意味着你的应用程序使用它的话,那么它就不能被其他应用程序使用)。

<uses-featureandroid:name="string"
          android:required=["true" | "false"]
          android:glEsVersion="integer"/>

Example:

<uses-feature android:name="android.hardware.bluetooth" />
<uses-feature android:name="android.hardware.camera" />

andorid:required如果被设置为true的话,那么缺少此硬件支持,那么该程序将不能正常运行,如果设置为false的话就不会。android:qlEsVersion这个属性用于声明应用程序所需要的OpenGL ES的版本。

uses-library

这个元素用于指定该应用程序必须链接的共享类库。

<uses-libraryandroid:name="string"
          android:required=["true" | "false"] />

android:required表示如果设置为true的话,那么如果没有这个共享类库,这个应用程序将不会被安装。

uses-permission

这个也是我们经常使用的标签,用来定义我们的应用程序所需要用到的应用权限。因为这里经常需要,所以我将我们可能使用的列表贴在下面:

|权限名|介绍|
|:——|:——-|
|android.permission.ACCESS_CHECKIN_PROPERTIES|允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write accessto the “properties” table in the checkin database, to change valuesthat get uploaded)|
|android.permission.ACCESS_COARSE_LOCATION|允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allowsan application to access coarse (e.g., Cell-ID, WiFi) location)|

android.permission.ACCESS_FINE_LOCATION|允许一个程序访问精良位置(如GPS) (Allows an application to accessfine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS|允许应用程序访问额外的位置提供命令(Allows an application to accessextra location provider commands)
android.permission.ACCESS_MOCK_LOCATION|允许程序创建模拟位置提供用于测试(Allows an application to create mocklocation providers for testing)
android.permission.ACCESS_NETWORK_STATE|允许程序访问有关GSM网络信息(Allows applications to accessinformation about networks)
android.permission.ACCESS_SURFACE_FLINGER|允许程序使用SurfaceFlinger底层特性(Allows an application to useSurfaceFlinger’s low level features)
android.permission.ACCESS_WIFI_STATE|允许程序访问Wi-Fi网络状态信息(Allows applications to accessinformation about Wi-Fi networks)
android.permission.ADD_SYSTEM_SERVICE|允许程序发布系统级服务(Allows an application to publishsystem-level services).
android.permission.BATTERY_STATS|允许程序更新手机电池统计信息(Allows an application to update thecollected battery statistics)
android.permission.BLUETOOTH|允许程序连接到已配对的蓝牙设备(Allows applications to connect topaired bluetooth devices)
android.permission.BLUETOOTH_ADMIN|允许程序发现和配对蓝牙设备(Allows applications to discover andpair bluetooth devices)
android.permission.BRICK|请求能够禁用设备(非常危险)(Required to be able to disable thedevice very dangerous.)
android.permission.BROADCAST_PACKAGE_REMOVED|允许程序广播一个提示消息,该程序包已经被移除
android.permission.BROADCAST_STICKY|允许一个程序广播常用intents(Allows an application to broadcaststicky intents)
android.permission.CALL_PHONE|允 许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows anapplication to initiate a phone call without going through theDialer user interface for the user to confirm the call beingplaced.)
android.permission.CALL_PRIVILEGED|允 许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allows anapplication to call any phone number, including emergency numbers,without going through the Dialer user interface for the user toconfirm the call being placed)
android.permission.CAMERA|请求访问使用照相设备(Required tobe able to access the camera device. )
android.permission.CHANGE_COMPONENT_ENABLED_STATE|允 许一个程序是否改变一个组件或其他的启用或禁用(Allows an application tochange whether an application component (other than its own) isenabled or not. )
android.permission.CHANGE_CONFIGURATION|允许一个程序修改当前设置,如本地化(Allows an application to modify thecurrent configuration, such as locale. )
android.permission.CHANGE_NETWORK_STATE|允许程序改变网络连接状态(Allows applications to change networkconnectivity state)
android.permission.CHANGE_WIFI_STATE|允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Ficonnectivity state)
android.permission.CLEAR_APP_CACHE|允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clearthe caches of all installed applications on the device. )
android.permission.CLEAR_APP_USER_DATA|允许一个程序清除用户设置(Allows an application to clear userdata)
android.permission.CONTROL_LOCATION_UPDATES|允许启用禁止位置更新提示从无线模块(Allows enabling/disabling locationupdate notifications from the radio. )
android.permission.DELETE_CACHE_FILES|允许程序删除缓存文件(Allows an application to delete cachefiles)
android.permission.DELETE_PACKAGES|允许一个程序删除包(Allows an application to deletepackages)
android.permission.DEVICE_POWER|允许访问底层电源管理(Allows low-level access to powermanagement)
android.permission.DIAGNOSTIC|允许程序RW诊断资源(Allows applications to RW to diagnosticresources. )
android.permission.DISABLE_KEYGUARD|允许程序禁用键盘锁(Allows applications to disable the keyguard)
android.permission.DUMP|允许程序返回状态抓取信息从系统服务(Allowsan application to retrieve state dump information from systemservices.)
android.permission.EXPAND_STATUS_BAR|允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似WindowsMobile中的托盘程序(Allows an application to expand or collapse the statusbar. )
android.permission.FACTORY_TEST|作为一个工厂测试程序,运行在root用户(Run as a manufacturer testapplication, running as the root user. )
android.permission.FLASHLIGHT|访问闪光灯,android开发网提示HTC Dream不包含闪光灯(Allows access tothe flashlight )
android.permission.FORCE_BACK|允许程序强行一个后退操作是否在顶层activities(Allowsan application to force a BACK operation on whatever is the topactivity. )
android.permission.FOTA_UPDATE|暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.
android.permission.GET_ACCOUNTS|访问一个帐户列表在Accounts Service中(Allows access to the listof accounts in the Accounts Service)
android.permission.GET_PACKAGE_SIZE|允许一个程序获取任何package占用空间容量(Allows an application to findout the space used by any package. )
android.permission.GET_TASKS|允 许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows anapplication to get information about the currently or recentlyrunning tasks: a thumbnail representation of the tasks, whatactivities are running in it, etc.)
android.permission.HARDWARE_TEST|允许访问硬件(Allows access to hardware peripherals. )
android.permission.INJECT_EVENTS|允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是hook技术吧(Allows anapplication to inject user events (keys, touch, trackball) into theevent stream and deliver them to ANY window.)
android.permission.INSTALL_PACKAGES|允许一个程序安装packages(Allows an application to installpackages. )
android.permission.INTERNAL_SYSTEM_WINDOW|允许打开窗口使用系统用户界面(Allowsan application to open windows that are for use by parts of thesystem user interface. )
android.permission.INTERNET|允许程序打开网络套接字(Allows applications to open networksockets)
android.permission.MANAGE_APP_TOKENS|允 许程序管理(创建、催后、 z- order默认向z轴推移)程序引用在窗口管理器中(Allows anapplication to manage (create, destroy, Z-order) application tokensin the window manager. )
android.permission.MASTER_CLEAR|目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机
android.permission.MODIFY_AUDIO_SETTINGS|允许程序修改全局音频设置(Allows an application to modify globalaudio settings)
android.permission.MODIFY_PHONE_STATE|允许修改话机状态,如电源,人机接口等(Allows modification of thetelephony state – power on, mmi, etc. )
android.permission.MOUNT_UNMOUNT_FILESYSTEMS|允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting filesystems for removable storage. )
android.permission.PERSISTENT_ACTIVITY|允许一个程序设置他的activities显示(Allowan application to make its activities persistent. )
android.permission.PROCESS_OUTGOING_CALLS|允许程序监视、修改有关播出电话(Allowsan application to monitor, modify, or abort outgoing calls)
android.permission.READ_CALENDAR|允许程序读取用户日历数据(Allows an application to read the user’scalendar data.)
android.permission.READ_CONTACTS|允许程序读取用户联系人数据(Allows an application to read theuser’s contacts data.)
android.permission.READ_FRAME_BUFFER|允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to takescreen shots and more generally get access to the frame bufferdata)
android.permission.READ_INPUT_STATE|允许程序返回当前按键状态(Allows an application to retrieve thecurrent state of keys and switches. )
android.permission.READ_LOGS|允许程序读取底层系统日志文件(Allows an application to read thelow-level system log files. )
android.permission.READ_OWNER_DATA|允许程序读取所有者数据(Allows an application to read the owner’sdata)
android.permission.READ_SMS|允许程序读取短信息(Allows an application to read SMSmessages.)
android.permission.READ_SYNC_SETTINGS|允许程序读取同步设置(Allows applications to read the syncsettings)
android.permission.READ_SYNC_STATS|允许程序读取同步状态(Allows applications to read the syncstats)
android.permission.REBOOT|请求能够重新启动设备(Required to be able to reboot the device.)
android.permission.RECEIVE_BOOT_COMPLETED|允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application toreceive the ACTION_BOOT_COMPLETED that is broadcast after thesystem finishes booting. )
android.permission.RECEIVE_MMS|允许一个程序监控将收到MMS彩信,记录或处理(Allows an application tomonitor incoming MMS messages, to record or perform processing onthem. )
android.permission.RECEIVE_SMS|允许程序监控一个将收到短信息,记录或处理(Allows an application to monitorincoming SMS messages, to record or perform processing onthem.)
android.permission.RECEIVE_WAP_PUSH|允许程序监控将收到WAP PUSH信息(Allows an application to monitorincoming WAP push messages. )
android.permission.RECORD_AUDIO|允许程序录制音频(Allows an application to record audio)
android.permission.REORDER_TASKS|允许程序改变Z轴排列任务(Allows an application to change theZ-order of tasks)
android.permission.RESTART_PACKAGES|允许程序重新启动其他程序(Allows an application to restart otherapplications)
android.permission.SEND_SMS|允许程序发送SMS短信(Allows an application to send SMSmessages)
android.permission.SET_ACTIVITY_WATCHER|允许程序监控或控制activities已经启动全局系统中(Allows an application towatch and control how activities are started globally in thesystem.)
android.permission.SET_ALWAYS_FINISH|允许程序控制是否活动间接完成在处于后台时(Allows an application to controlwhether activities are immediately finished when put in thebackground.)
android.permission.SET_ANIMATION_SCALE|修改全局信息比例(Modify the global animation scalingfactor.)
android.permission.SET_DEBUG_APP|配置一个程序用于调试(Configurean application for debugging.)
android.permission.SET_ORIENTATION|允许底层访问设置屏幕方向和实际旋转(Allows low-level access to settingthe orientation (actually rotation) of the screen.)
android.permission.SET_PREFERRED_APPLICATIONS|允许一个程序修改列表参数PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred() 方法(Allows an applicationto modify the list of preferred applications with thePackageManager.addPackageToPreferred() andPackageManager.removePackageFromPreferred() methods.)
android.permission.SET_PROCESS_FOREGROUND|允许程序当前运行程序强行到前台(Allows an application to force anycurrently running process to be in the foreground.)
android.permission.SET_PROCESS_LIMIT|允许设置最大的运行进程数量(Allows an application to set themaximum number of (not needed) application processes that can berunning. )
android.permission.SET_TIME_ZONE|允许程序设置时间区域(Allows applications to set the system timezone)
android.permission.SET_WALLPAPER|允许程序设置壁纸(Allows applications to set the wallpaper )
android.permission.SET_WALLPAPER_HINTS|允许程序设置壁纸hits(Allows applications to set the wallpaperhints)
android.permission.SIGNAL_PERSISTENT_PROCESSES|允许程序请求发送信号到所有显示的进程中(Allowan application to request that a signal be sent to all persistentprocesses)
android.permission.STATUS_BAR|允许程序打开、关闭或禁用状态栏及图标Allows an application to open,close, or disable the status bar and its icons.
android.permission.SUBSCRIBED_FEEDS_READ|允许一个程序访问订阅RSS Feed内容提供(Allows an application to allowaccess the subscribed feeds ContentProvider. )
android.permission.SUBSCRIBED_FEEDS_WRITE|系统暂时保留改设置,android开发网认为未来版本会加入该功能。
android.permission.SYSTEM_ALERT_WINDOW|允 许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层(Allowsan application to open windows using the type TYPE_SYSTEM_ALERT,shown on top of all other applications. )
android.permission.VIBRATE|允许访问振动设备(Allows access to the vibrator)
android.permission.WAKE_LOCK|允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失
android.permission.WRITE_APN_SETTINGS|允许程序写入API设置(Allows applications to write the apnsettings)
android.permission.WRITE_CALENDAR|允许一个程序写入但不读取用户日历数据(Allows an application to write(but not read) the user’s calendar data. )
android.permission.WRITE_CONTACTS|允许程序写入但不读取用户联系人数据(Allows an application to write (butnot read) the user’s contacts data. )
android.permission.WRITE_GSERVICES|允许程序修改Google服务地图(Allows an application to modify theGoogle service map. )
android.permission.WRITE_OWNER_DATA|允许一个程序写入但不读取所有者数据(Allows an application to write (butnot read) the owner’s data.)
android.permission.WRITE_SETTINGS|允许程序读取或写入系统设置(Allows an application to read or writethe system settings. )
android.permission.WRITE_SMS|允许程序写短信(Allows an application to write SMSmessages)
android.permission.WRITE_SYNC_SETTINGS|允许程序写入同步设置(Allows applications to write the syncsettings)

uses-sdk

设置你使用的SDK.现在我们公司的minSdkVersion已经是14啦,哈哈。

<uses-sdk android:minSdkVersion="integer"
      android:targetSdkVersion="integer"
      android:maxSdkVersion="integer" />

结语

本篇文章有不完善之处,也参考了一些谷歌官网的翻译,如果有什么错误的话,欢迎指正。

以上。

口号:Make things interesting!

你可能感兴趣的:(xml,android)