AndroidManiFest.xml清单文件是每个Android项目所必须的,它是整个Android应用的全局描述文件。AndroidManiFest.xml清单文件说明了该应用的名称、所使用的图标以及包含的组件等等。

AndroidManiFest.xml清单文件通常包含如下信息:

1. 应用程序的包名,该包名将会作为该应用的唯一标识

2. 应用所包含的组件,如Activity、Service、BroadcastReceiver和ContentProvider等

3. 应用程序兼容的最低版本

4. 应用程序使用系统所需的权限声明

5. 其他程序访问该程序所需的权限声明

下面是一份简单的AndroidManiFest.xml清单文件

<?xml version="1.0" encoding="utf-8"?>
<!-- 指定该Android应用的包名 该包名可用于唯一地表示该应用-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.lixyz.layoutdemo" > <!-- 指定Android应用标签、图标等信息 -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- 定义Android应用的一个组件:Activity,该Activity的类为MainActivity,并指定该Activity的标签 -->
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<!-- 指定该Activity是程序的入口 -->
<action android:name="android.intent.action.MAIN" />
<!-- 指定加载该应用时运行该Activity -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

  

一个Android应用可能需要权限才能调用Android系统的功能,一个Android应用也可能被其他应用调用,因此它需要声明调用自身所需要的权限。

1. 声明运行该应用本身所需要的权限

通过为<manifest.../>元素添加<uses-permission.../>子元素即可为程序本身声明权限

例如在<manifest.../>元素里添加如下代码

<!-- 声明该应用本身需要打电话的权限 -->

<uses-permission android:name="android.permission.CAL_PHONE">

2. 声明调用该应用所需的权限

通过为应用的各个组件元素,例如<activity.../>元素添加<uses-permission.../>子元素即可声明调用该程序所需的权限

例如在<activity.../>元素添加如下代码

<!-- 声明该应用本身需要发送短信的权限 -->

<uses-permission android:name="android.permission.SEND_SMS">

通过上面的介绍可以看出<uses-permission>元素的用法倒不难,但到底有多少权限呢?实际上Android提供了大量权限,这些权限都位于ManiFest.permission类中,一般来说如下表所示:

ACCESS_CHECKIN_PROPERTIES

允许在登入数据库的时候读写其中的属性表,并上传改变的值

ACCESS_COARSE_LOCATION

允许应用访问范围(如WIFI)性的定位

ACCESS_FINE_LOCATION

允许应用访问精确(如GPS)性的定位

ACCESS_LOCATION_EXTRA_COMMANDS

允许应访问额外的提供定位的指令

ACCESS_MOCK_LOCATION

允许应用创建用于测试的模拟定位提供者

ACCESS_NETWORK_STATE

允许应用访问网络上的信息

ACCESS_SURFACE_FLINGER

允许应用使用低版本视图的特征

ACCESS_WIFI_STATE

允许应用访问关羽Wi-Fi网络的信息

ACCOUNT_MANAGER

允许应用进入帐户认证

AUTHENTICATE_ACCOUNTS

允许应用为ACCOUNT_MANAGER扮演一个帐户认证系统

BATTERY_STATS

允许应用去统计电源信息

BIND_APPWIDGET

允许应用告诉AppWidget哪个应用能够访问该AppWidget的数据

BIND_DEVICE_ADMIN

必须通过关机接收者的请求来确保只有系统能够与之交互

BIND_INPUT_METHOD

必须通过InputMethodService的请求来确保只有系统能够与之绑定

BIND_WALLPAPER

必须通过WallpaperService的请求来确保只有系统能够与之绑定

BLUETOOTH

允许应用去连接蓝牙设备

BLUETOOTH_ADMIN

允许应用找到与之连接的蓝牙设备

BRICK

被请求废止设备(非常危险)

BROADCAST_PACKAGE_REMOVED

允许应用发出一个程序包被移除的广播消息

BROADCAST_SMS

允许应用发出一个收到短信的消息

BROADCAST_STICKY

允许应用发出一个与intent相连的消息

BROADCAST_WAP_PUSH

允许应用发出一个收到WAP PUSH的广播消息

CALL_PHONE

允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的拨打程序

CALL_PRIVILEGED

允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的任意号码的拨打,包括紧急号码.

CAMERA

能够启动照相机设备的请求

CHANGE_COMPONENT_ENABLED_STATE

允许应用去改变一个应用是否是激活状态

CHANGE_CONFIGURATION

允许应用修改当前的配置,如本地设置

CHANGE_NETWORK_STATE

允许应用改变网络的连接状态

CHANGE_WIFI_MULTICAST_STATE

允许应用进入Wi-Fi的组播方式

CHANGE_WIFI_STATE

允许应用改变Wi-Fi的连接状态

CLEAR_APP_CACHE

允许应用清除所有安装在设备上的应用的缓存

CLEAR_APP_USER_DATA

允许应用清除使用者的信息资料

CONTROL_LOCATION_UPDATES

允许从广播设备来更新或不更新本地的消息

DELETE_CACHE_FILES

允许应用删除掉缓存文件

DELETE_PACKAGES

允许应用删除掉程序包

DEVICE_POWER

允许低权限的访问电源管理项

DIAGNOSTIC

允许应用诊断程序资源

DISABLE_KEYGUARD

允许应用禁用键盘锁

DUMP

允许应用从系统服务中恢复转储的信息

EXPAND_STATUS_BAR

允许应用扩大或缩小状态栏

FACTORY_TEST

如制造商测试的应用一样用终极权限用户运行

FLASHLIGHT

允许访问手电筒

FORCE_BACK

允许应用强制的返回操作而不论是不是最终的activity

GET_ACCOUNTS

允许应用访问账目服务中的统计清单

GET_PACKAGE_SIZE

允许应用查找出任何程序包使用的空间

GET_TASKS

允许应用找到关于当前或最近运行的任务和在哪些acitivities里运行

GLOBAL_SEARCH

这个权限可以被内容提供者用来允许使用全程搜索他们的数据

HARDWARE_TEST

允许访问硬件及周边设备.

INJECT_EVENTS

允许应用注入用户事件(键盘、触摸)到事件中然后提供给任意的窗口

INSTALL_LOCATION_PROVIDER

允许应用安装一个位置提供商到位置管理器中

INSTALL_PACKAGES

允许应用安装程序包.

INTERNAL_SYSTEM_WINDOW

允许应用打开被部分系统用户接口使用的窗口

INTERNET

允许应用打开网络套接口

KILL_BACKGROUND_PROCESSES

允许应用去呼叫killBackgroundProcesses(String).方法

MANAGE_ACCOUNTS

允许应用去管理帐户管理者中的重要清单

MANAGE_APP_TOKENS

允许应用去管理(创建、销毁、顺序)在窗口管理者中的应用

MASTER_CLEAR

 

MODIFY_AUDIO_SETTINGS

允许应用修改全局音频设定

MODIFY_PHONE_STATE

允许改变拨打电话的状态-电源等

MOUNT_FORMAT_FILESYSTEMS

允许格式化可移除的存储仓库的文件系统

MOUNT_UNMOUNT_FILESYSTEMS

允许装备或解除可移除的存储仓库的文件系统

PERSISTENT_ACTIVITY

允许应用使它的activities更持久稳固

PROCESS_OUTGOING_CALLS

允许应用监督、限定或终止呼出的电话

READ_CALENDAR

允许应用读取用户的日历数据

READ_CONTACTS

允许应用读取用户的联系人数据

READ_FRAME_BUFFER

允许应用抓取屏幕和更多可获得的缓冲数据

READ_HISTORY_BOOKMARKS

允许应用去读取(非写)用户浏览历史和书签

READ_INPUT_STATE

允许应用去的当前键盘和控制的状态

READ_LOGS

允许应用读取低级别的系统日志文件

READ_OWNER_DATA

允许应用读取所有者的数据

READ_PHONE_STATE

允许读取电话的状态

READ_SMS

允许应用读取短信息.

READ_SYNC_SETTINGS

允许应用读取同步的设置

READ_SYNC_STATS

允许应用读取同步的统计数据

REBOOT

重新启动设备的请求

RECEIVE_BOOT_COMPLETED

允许应用接收在系统完成启动后发出的ACTION_BOOT_COMPLETED广播信息

RECEIVE_MMS

允许应用去监听多媒体信息并记录和对起进行处理

RECEIVE_SMS

允许应用去监听短消息并记录和对起进行处理

RECEIVE_WAP_PUSH

允许应用监听WAP push信息

RECORD_AUDIO

允许应用记录音频信息

REORDER_TASKS

允许应用改变任务的关系位置

RESTART_PACKAGES

已废弃使用

SEND_SMS

允许应用发送短消息.

SET_ACTIVITY_WATCHER

允许应用查看和控制activities是怎样在系统中运行的

SET_ALWAYS_FINISH

允许应用去控制当activities被覆盖后是否是立即接触结束

SET_ANIMATION_SCALE

改变动画的比例因子

SET_DEBUG_APP

设置一个应用为调试模式

SET_ORIENTATION

允许低级别的设置屏幕的方向

SET_PREFERRED_APPLICATIONS

已废弃

SET_PROCESS_LIMIT

允许应用设置可以运行的最大数的应用进程

SET_TIME

允许应用设置系统时间

SET_TIME_ZONE

允许应用设置系统时区时间

SET_WALLPAPER

允许应用设置壁纸

SET_WALLPAPER_HINTS

允许应用设置锁定的壁纸

SIGNAL_PERSISTENT_PROCESSES

允许应用发出一个给所有稳定进程信号的请求

STATUS_BAR

允许应用打开、关闭或使状态栏或图标失去作用

SUBSCRIBED_FEEDS_READ

允许应用访问内容提供者的签署认证

SUBSCRIBED_FEEDS_WRITE

 

SYSTEM_ALERT_WINDOW

允许应用使用TYPE_SYSTEM_ALERT来打开窗口,并将窗口显示于其他应用的顶端

UPDATE_DEVICE_STATS

允许应用更新设备资料信息

USE_CREDENTIALS

允许应用从管理器得到授权请求

VIBRATE

允许应用访问震动器

WAKE_LOCK

允许使用电源锁定管理以使进程休眠或屏幕变暗

WRITE_APN_SETTINGS

允许应用去写入接入点设置

WRITE_CALENDAR

允许应用写(非读)用户的日历数据

WRITE_CONTACTS

允许应用写(非读)用户的联系人数据

WRITE_EXTERNAL_STORAGE

允许应用写(非读)用户的外部存储器

WRITE_GSERVICES

允许应用修改Google服务地图

WRITE_HISTORY_BOOKMARKS

允许应用写(非读)用户的浏览器历史和书签

WRITE_OWNER_DATA

允许应用写(非读)用户的数据

WRITE_SECURE_SETTINGS

允许应用写或读当前系统设置

WRITE_SETTINGS

允许应用写或读系统设置

WRITE_SMS

允许应用写短消息信息

WRITE_SYNC_SETTINGS

允许应用写同步设置

转自《疯狂Android讲义》

Android笔记(十二)AndroidManiFest.xml的更多相关文章

  1. Android Studio(十二):打包多个发布渠道的apk文件

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  2. 《C++游戏开发》笔记十二 战争迷雾:初步实现

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9475979 作者:七十一雾央 新浪微博:http:/ ...

  3. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  4. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  5. studio构建错误Element uses-permission#android.permission.ACCESS_NETWORK_STATE at AndroidManifest.xml:38:5-79 dupli

    今天在项目构建的时候遇到了如下报错: Element uses-permission#android.permission.ACCESS_NETWORK_STATE at AndroidManifes ...

  6. DirectX11笔记(十二)--Direct3D渲染8--EFFECTS

    原文:DirectX11笔记(十二)--Direct3D渲染8--EFFECTS 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737 ...

  7. Android笔记(二十) Activity中的跳转和值传递

    我们知道,一个APP是由若干个Activity组成的,那么各个Acitivity中肯定需要进行跳转以及传递数值以保证App的运行,现总结一下多个Activity之间的跳转和值传递. 显式Intent跳 ...

  8. Android笔记(二十六) Android中的广播——BroadcastReceiver

    为了方便进行系统级别的消息通知,Android有一套类似广播的消息机制,每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收自己所关心的广播内容,这些广播可能是来自于系统,也可能是来自于 ...

  9. Android笔记(二十五) ListView的缓存机制与BaseAdapter

    之前接触了ListView和Adapter,Adapter将数据源和View连接起来,实际应用中,我们要显示的数据往往有很多,而屏幕只有那么大,系统只能屏幕所能显示的内容,当我们滑动屏幕,会将旧的内容 ...

  10. Android笔记(二十二) Android中的GridView

    GridView和ListView一样,是Android中比较常见的布局控件,譬如我们的手机桌面其实就是一个GridView. 效果: 实现过程和ListView类似,也是通过Adapter将数据源展 ...

随机推荐

  1. matlab学习笔记1--matlab工作界面

    一起来学matlab-matlab学习笔记1--matlab工作界面 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢 ...

  2. nginx调优(一)

    (1).隐藏nginx版本号 隐藏版本号可以有效避免黑客根据nginx版本信息,查找对应漏洞进行攻击. 下载nginx源码包(http://nginx.org/en/download.html)并上传 ...

  3. Internet Download Manager 快速下载插件,破解版

    下载下来直接双击绿化按钮即可. 软件链接 : https://pan.baidu.com/s/1agK3cLtjJzXcGEgsuv5mVQ  提取码: ckm7

  4. iOS实现简单时钟效果

    实现的效果图如下 : 实现代码如下: #import "ViewController.h" //将旋转角度转换为弧度制#define angleToRadion(angle) (( ...

  5. Fiddler抓取Android手机网络数据包

    也许你也有疑问,如果开发没有完备的接口文档,我如何知道他API的信息? 这时我们就得通过一些抓包工具抓取这些API信息. 常见抓包工具 HTTP抓包工具:Fiddler.Charles.Firebug ...

  6. MySQL的join on和 where 的执行顺序和区别,以及各种连接说明

    目录 1.各种连接的解读说明: 1.1.各种连接的含义和说明 1.1.1 所有连接分类 1.1.2 left join 和 left outer join 区别 1.2.神图参考 1.4.一些参考说明 ...

  7. 配置MySQL,使其与PyCharm相关联

    在配置MySQL和PyCharm时,经常出现这样的错误提示: Connection to base@localhost failed. [08001] Could not create connect ...

  8. qt linux下自动检测U盘热插拔

    如果用U盘来更新软件,需要先删除当前的可执行文件,但是如果删除之后,复制失败的话会导致后续没有文件可以运行了.一个方法是将新的可执行文件放到另一个目录中,当copy成功后修改linux的启动文件,然后 ...

  9. 【面试题】如何删除 ArrayList 中奇数位置的元素?

    如何删除 ArrayList 中奇数位置的元素? 面试题携程 import java.util.ArrayList; import java.util.Iterator; import java.ut ...

  10. torch.Tensor和numpy.ndarray

    1. torch.Tensor和numpy.ndarray相互转换 import torch import numpy as np # <class 'numpy.ndarray'> np ...