AndroidManifest解析以及权限详解

来源:互联网 发布:nginx test config 编辑:程序博客网 时间:2024/05/01 11:02

Manifest

指定该Android应用的报名,该包名可用于唯一地标识应用

<manifest xmlns:android="http://schemas.android.com/apk/res/android"          package="com.mwf.analyze"          android:sharedUserId="android.uid.system">

android:sharedUserId

Android给每个APK进程分配一个单独的空间,manifest中的userid就是对 应一个分配的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。
通常,不同的APK会具有不同的userId,因此运行时属于不同的进程中,而不同进程中的资源是不共享的,在保障了程序运行的稳定。然后在有些时候,我们自己开发了多个APK并且需要他们之间互相共享资源,那么就需要通过设置shareUserId来实现这一目的。
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样。

datadata自定义的package 路径下的互相访问

每个安装的程序都会根据自己的包名在手机文件系统的datadatayour package建立一个文件夹(需要su权限才能看见),用于存储程序相关的数据。
在代码中,我们通过context操作一些IO资源时,相关文件都在此路径的相应文件夹中。比如默认不设置外部路径的文件、DB等等。
正常情况下,不同的apk无法互相访问对应的app文件夹。但通过设置相同的shareUserId后,就可以互相访问了。

如:A程序中

//默认建立在data/data/xxx/file/            fOut = openFileOutput('settings.dat', MODE_PRIVATE);                       osw = new OutputStreamWriter(fOut);           osw.write(data);           osw.flush();

B程序中

//获取程序A的context           Context ctx = this.createPackageContext('com.example.shareusertesta',Context.CONTEXT_IGNORE_SECURITY);           String msg = ReadSettings(ctxDealFile);           Toast.makeText(this, 'DealFile2 Settings read' + msg,Toast.LENGTH_SHORT).show();           WriteSettings(ctx, 'deal file2 write');

两个程序就能互相的访问资源了。(当然前提是都设置了相同的shareUserId)

Resources和SharedPreferences的共享通过shareuserId共享,我们可获取到程序A的context。因此,我们就可以通过context来获取程序A对应的各种资源。比较常用的就是Raw资源的获取,如一些软件的apk皮肤包就是采用了这种技术,将主程序和皮肤资源包分在两个apk中。
获 取Resources很简单,在程序A和B的mainfest中设置好相同的shareuserId后,通过createPackageContext获 取context即可。之后就和原来的方式一样,通过getResources函数获取各种资源,只是此时的context环境是目标APP的 context环境。
看见程序A和B之间的联系有三个:
1 mainfest中声明shareuserId时需要知道一个共同的userId
2 createpackageContext时需要知道目标APK的package的name
3 获取资源时需要知道该资源的对应ID
.android:sharedUserId="android.uid.system"
将当前应用进程设置为系统级进程(不推介随意这么做,会产生很多隐患)。拥有此属性后,我们的应用就可以无视用户,无法无天地处理很多事情,比如擅自修改手机system分区的内容、静默安装等。之前开发过一个类似切换多套开关机动画和音效的模块,添加此属性后,就可以明目张胆地将我们的数据节点存在system分区,可以让用户恢复出厂设置都清空不了我们的数据。
但是添加此属性后,我们需要在当前模块的MakeFile中添加LOCAL_CERTIFICATE := platform,然后在安卓源码环境下使用原生make命令编译才能生效(原生编译虽然比使用ide工具麻烦很多,但是却能使用很多ide工具无权限使用的api)。
如果非要在ide工具中使用则必须通过系统密钥重签名生成的apk才行(未亲自验证)。

Application

    <!-- allowBackup:关闭应用程序数据的备份和恢复功能,注意该属性值默认为true,    如果你不需要你的应用被恢复导致隐私数据暴露(如果值为true,甚至可以直接通过adb命令获取该应用中的数据),    必须手动设置此属性。-->    <!-- icon:图标 -->    <!-- label:应用名称 -->    <!-- roundIcon:圆形图标 -->    <!-- supportsRtl:android4.2有一个新特性 layoutRtl,当然是对于开发者而言的,主要是方便开发者去支持阿拉伯语/波斯语等阅读习惯是从右往左的。         可以在manifest的application标签添加:android:supportsRtl 取值:true/false         这样就可以打开layoutRtl这个功能。如果当前系统语言是阿拉伯语/波斯语,打开了这个功能的应用的布局就会自动变成从右往左的,当然前提是布局没有写死控件间的位置。    -->    <!-- taskAffinity:设置Activity任务栈的名称,可忽略 -->    <!-- hardwareAccelerated:开启硬件加速,一般应用不推介使用。就算非要使用也最好在某个Activity单独开启,避免过大的内存开销。 -->    <application        android:allowBackup="true"        android:hardwareAccelerated="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:roundIcon="@mipmap/ic_launcher_round"        android:supportsRtl="true"        android:theme="@style/AppTheme">

Activity

<!-- screenOrientation:该属性是用来设置当前的activity在屏幕上显示的方向 -->        <!-- launchMode:该属性是用来设置当前的activity在屏幕上显示的方向 -->        <!-- configChanges:该属性是用来设置当前的activity在屏幕上显示的方向 -->        <!-- taskAffinity:指出了它希望进入的Task -->        <!-- windowSoftInputMode:共有9个属性,可以分别为软键盘设置禁止、显示、大小调整等情况。 -->        <!-- excludeFromRecents:设置为true后,当用户按了“最近任务列表”时候,该activity不会出现在最近任务列表中,可达到隐藏应用的目的。 -->        <!-- exported:是否支持其它应用调用当前组件。        默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false。 -->        <activity            android:name=".activity.WelcomeActivity"            android:launchMode="singleTop"            android:taskAffinity="taskName"            android:exported="true"            android:excludeFromRecents="true"            android:windowSoftInputMode="stateVisible"            android:screenOrientation="portrait"            android:configChanges="orientation|screenSize|fontScale">            >            <intent-filter>                <!-- 指定该Activity是该程序的入口 -->                <action android:name="android.intent.action.MAIN"/>                <!-- 指定加载该应用时运行该Activity -->                <category android:name="android.intent.category.LAUNCHER"/>            </intent-filter>        </activity>

screenOrientation

"unspecified"默认值,由系统来选择方向。它的使用策略,以及由于选择时特定的上下文环境,可能会因为设备的差异而不同。"user"使用用户当前首选的方向。
"behind"使用Activity堆栈中与该Activity之下的那个Activity的相同的方向。"landscape"横向显示(宽度比高度要大)"portrait"纵向显示(高度比宽度要大)"reverseLandscape"与正常的横向方向相反显示,在API Level 9中被引入。"reversePortrait"与正常的纵向方向相反显示,在API Level 9中被引入。"sensorLandscape"横向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。"sensorPortrait"纵向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。"sensor"显示的方向是由设备的方向传感器来决定的。显示方向依赖与用户怎样持有设备;当用户旋转设备时,显示的方向会改变。但是,默认情况下,有些设备不会在所有的四个方向上都旋转,因此要允许在所有的四个方向上都能旋转,就要使用fullSensor属性值。"fullSensor"显示的方向(4个方向)是由设备的方向传感器来决定的,除了它允许屏幕有4个显示方向之外,其他与设置为“sensor”时情况类似,不管什么样的设备,通常都会这么做。例如,某些设备通常不使用纵向倒转或横向反转,但是使用这个设置,还是会发生这样的反转。这个值在API Level 9中引入。"nosensor"屏幕的显示方向不会参照物理方向传感器。传感器会被忽略,所以显示不会因用户移动设备而旋转。除了这个差别之外,系统会使用与“unspecified”设置相同的策略来旋转屏幕的方向。

launchMode

Activity一共有以下四种launchMode:

1.standard 2.singleTop 3.singleTask 4.singleInstance

(1)standard:系统默认的标准型,每次跳转系统都会在task中生成一个新的Activity实例,并且放于栈结构的顶部,当我们按下后退键时,才能看到原来的Activity实例。

这就是standard启动模式,不管有没有已存在的实例,都生成新的实例。跟普通的栈一样,先进后出。

(2)single:它是在standard的标准下加了一个属性。即当你要跳转的activity是位于栈顶时,它不会再new一个新的实例出来。但如果是firstactivity和secondactivity交替跳转,那跟普通的standard模式一样。

(3)singleTask。它的原理是保证这个activity实例生成后是不会再生成新的实例。比如说两个activity,first和second。First设为singleTask,然后跳转到second,再返回first时,first不会生成实例,而是从栈中取出first放在栈顶。还有一点比较重要的一点是,在first上的activity会全部移除出栈,不管你这个activitys是不是也是singleTask模式,一律移除。

(4)singleInstance。这个就比较特殊了,不过也比较简单。就是新开一个task栈专门放这个activity,而其它activity不让它进去。

configChanges

对android:configChanges属性,一般认为有以下几点:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges='orientation'时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges='orientation|keyboardHidden'时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

但是,自从Android 3.2(API 13),在设置Activity的android:configChanges='orientation|keyboardHidden'后,还是一样 会重新调用各个生命周期的。因为screen size也开始

跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载

Activity,除了设置'orientation', 你还必须设置'ScreenSize'。

http://www.cnblogs.com/adamzuocy/archive/2009/10/15/1583670.html

taskAffinity

每 个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task。如果一个Activity没有显式的指明该 Activity的taskAffinity,那么它的这个属性就等于Application指明的taskAffinity,如果 Application也没有指明,那么该taskAffinity的值就等于包名。而Task也有自己的affinity属性,它的值等于它的根 Activity的taskAffinity的值。 一开始,创建的Activity都会在创建它的Task中,并且大部分都在这里度过了它的整个生命。

allowTaskReparenting

用来标记Activity能否从启动的Task移动到taskAffinity指定的Task,默认是继承至 application中的allowTaskReparenting=false,如果为true,则表示可以更换;false表示不可以。
这两个属性通常是放在一起用的。
简而言之,用了taskAffinity的activity实例化的时候会先看看有没有与taskAffinity相同的task,如果有,则会跑到那边的task中,并实例化。

exported

这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能通过指定明确的类名来调用,这样就是说该服务只能在应用程序的内部使用(因为其他外 部使用者不会知道该服务的类名),因此这种情况下,这个属性的默认值是false。另一方面,如果至少包含了一个过滤器,则意味着该服务可以给外部的其他 应用提供服务,因此默认值是true。
这个属性不是限制把服务暴露给其他应用程序的唯一方法。还可以使用权限来限制能够跟该服务交互的外部实体。

excludeFromRecents

控制在不在recent列表中显示,就是使用该activity时app不会出现在最近使用app列表中,为true时不显示

Permissions

<!-- 在SDCard中创建与删除文件权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>    <!-- 往SDCard写入数据权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    <!-- 往SDCard读入数据权限 -->    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>    <!-- 获取网络状态:获取网络信息状态,如当前的网络连接是否有效 -->    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <!-- 获取WiFi状态:获取当前WiFi接入的状态以及WLAN热点的信息 -->    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    <!-- 访问登记属性:读取或写入登记check-in数据库属性表的权限 -->    <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>    <!-- 获取错略位置:通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 -->    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>    <!-- 获取精确位置:通过GPS芯片接收卫星的定位信息,定位精度达10米以内 -->    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>    <!-- 访问定位额外命令:允许程序访问额外的定位提供者指令 -->    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>    <!-- 账户管理:获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限 -->    <uses-permission android:name="android.permission.ACCOUNT_MANAGER"/>    <!-- 电量统计:获取电池电量统计信息 -->    <uses-permission android:name="android.permission.BATTERY_STATS"/>    <!-- 绑定小插件:允许一个程序告诉appWidget服务需要访问小插件的数据库,只有非常少的应用才用到此权限 -->    <uses-permission android:name="android.permission.BIND_APPWIDGET"/>    <!-- 绑定设备管理:请求系统管理员接收者receiver,只有系统才能使用 -->    <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN"/>    <!-- 绑定输入法:请求InputMethodService服务,只有系统才能使用 -->    <uses-permission android:name="android.permission.BIND_INPUT_METHOD"/>    <!-- 绑定RemoteView:必须通过RemoteViewsService服务来请求,只有系统才能用 -->    <uses-permission android:name="android.permission.BIND_REMOTEVIEWS"/>    <!-- 绑定壁纸:必须通过WallpaperService服务来请求,只有系统才能用  -->    <uses-permission android:name="android.permission.BIND_WALLPAPER"/>    <!-- 使用蓝牙:允许程序连接配对过的蓝牙设备 -->    <uses-permission android:name="android.permission.BLUETOOTH"/>    <!-- 蓝牙管理:允许程序进行发现和配对新的蓝牙设备  -->    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>    <!-- 应用删除时广播:当一个应用在删除时触发一个广播,         * 1.重新安装本应用时会收到广播         * 2.重新安装其他应用时会收到广播         * 3.其他应用被卸载时会收到广播,但本应用被卸载时不会收到广播 -->    <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED"/>    <!-- 收到短信时广播:当收到短信时触发一个广播 -->    <uses-permission android:name="android.permission.BROADCAST_SMS"/>    <!-- 连续广播:允许一个程序收到广播后快速收到下一个广播 -->    <uses-permission android:name="android.permission.BROADCAST_STICKY"/>    <!-- WAP PUSH广播:WAP PUSH服务收到后触发一个广播  -->    <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH"/>    <!-- 拨打电话:允许程序从非系统拨号器里输入电话号码 -->    <uses-permission android:name="android.permission.CALL_PHONE"/>    <!-- 拨打电话:允许程序从非系统拨号器里输入电话号码-->    <uses-permission android:name="android.permission.CALL_PRIVILEGED"/>    <!-- 拍照权限:允许访问摄像头进行拍照 -->    <uses-permission android:name="android.permission.CAMERA"/>    <!-- 改变组件状态:改变组件是否启用状态  -->    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>    <!-- 改变配置:允许当前应用改变配置,如定位 -->    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>    <!-- 改变网络状态:改变网络状态如是否能联网 -->    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    <!-- 改变WiFi多播状态:改变WiFi多播状态 -->    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>    <!-- 改变WiFi状态:改变WiFi状态 -->    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    <!-- 清除应用缓存:清除应用缓存 -->    <uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>    <!-- 清除用户数据:清除应用的用户数据 -->    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/>    <!-- 控制定位更新:允许获得移动网络定位信息改变 -->    <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES"/>    <!-- 删除缓存文件:允许应用删除缓存文件 -->    <uses-permission android:name="android.permission.DELETE_CACHE_FILES"/>    <!-- 删除应用: 允许程序删除应用 -->    <uses-permission android:name="android.permission.DELETE_PACKAGES"/>    <!-- 应用诊断:允许程序到RW到诊断资源 -->    <uses-permission android:name="android.permission.DIAGNOSTIC"/>    <!-- 禁用键盘锁:允许程序禁用键盘锁 -->    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>    <!-- 转存系统信息:允许程序获取系统dump信息从系统服务 -->    <uses-permission android:name="android.permission.DUMP"/>    <!-- 状态栏控制:允许程序扩展或收缩状态栏 -->    <uses-permission android:name="android.permission.STATUS_BAR"/>    <!-- 工厂测试模式: 允许程序运行工厂测试模式-->    <uses-permission android:name="android.permission.FACTORY_TEST"/>    <!--使用闪光灯:允许访问闪光灯  -->    <uses-permission android:name="android.permission.FLASHLIGHT"/>    <!-- 强制后退:允许程序强制使用back后退按键,无论Activity是否在顶层 -->    <uses-permission android:name="android.permission.FORCE_BACK"/>    <!--获取应用大小:获取应用的文件大小  -->    <uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>    <!-- 获取任务信息:允许程序获取当前或最近运行的应用 -->    <uses-permission android:name="android.permission.GET_TASKS"/>    <!-- 允许全局搜索:允许程序使用全局搜索功能 -->    <uses-permission android:name="android.permission.GLOBAL_SEARCH"/>    <!-- 硬件测试:访问硬件辅助设备,用于硬件测试  -->    <uses-permission android:name="android.permission.HARDWARE_TEST"/>    <!-- 注射事件:允许访问本程序的底层事件,获取按键、轨迹球的事件流 -->    <uses-permission android:name="android.permission.INJECT_EVENTS"/>    <!--安装定位提供:安装定位提供  -->    <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"/>    <!-- 安装应用程序:允许程序安装应用 -->    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>    <!-- 内部系统窗口:允许程序打开内部窗口,不对第三方应用程序开放此权限 -->    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"/>    <!-- 访问网络:访问网络连接,可能产生GPRS流量 -->    <uses-permission android:name="android.permission.INTERNET"/>    <!-- 结束后台进程:允许程序调用killBackgroundProcesses(String).方法结束后台进程 -->    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>    <!-- 管理账户:允许程序管理AccountManager中的账户列表 -->    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>    <!-- 管理程序引用:管理创建、摧毁、Z轴顺序,仅用于系统 -->    <uses-permission android:name="android.permission.MANAGE_APP_TOKENS"/>    <!-- 高级权限:允许mTweak用户访问高级系统权限  -->    <uses-permission android:name="android.permission.MTWEAK_USER"/>    <!-- 社区权限:允许使用mTweak社区权限 -->    <uses-permission android:name="android.permission.MTWEAK_FORUM"/>    <!-- 软格式化:允许程序执行软格式化,删除系统配置信息  -->    <uses-permission android:name="android.permission.MASTER_CLEAR"/>    <!-- 修改声音设置:修改声音设置信息 -->    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>    <!--修改电话状态: 修改电话状态,如飞行模式,但不包含替换系统拨号器界面 -->    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>    <!-- 格式化文件系统:,格式化可移动文件系统,比如格式化清空SD卡 -->    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>    <!-- 挂载文件系统 -->    <uses-permission android:name="android.permission.挂载、反挂载外部文件系统"/>    <!-- 允许NFC通讯:允许程序执行NFC近距离通讯操作,用于移动支持 -->    <uses-permission android:name="android.permission.NFC"/>    <!-- 永久Activity:创建一个永久的Activity,该功能标记为将来将被移除 -->    <uses-permission android:name="android.permission.PERSISTENT_ACTIVITY"/>    <!-- 处理拨出电话:允许程序监视,修改或放弃播出电话 -->    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>    <!-- 读取日程提醒:允许程序读取用户的日程信息 -->    <uses-permission android:name="android.permission.READ_CALENDAR"/>    <!-- 读取联系人:允许应用访问联系人通讯录信息 -->    <uses-permission android:name="android.permission.READ_CONTACTS"/>    <!-- 屏幕截图:读取帧缓存用于屏幕截图 -->    <uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>    <!-- 读取收藏夹和历史记录:读取浏览器收藏夹和历史记录  -->    <uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS"/>    <!--读取输入状态:读取当前键的输入状态,仅用于系统  -->    <uses-permission android:name="android.permission.READ_INPUT_STATE"/>    <!-- 读取系统日志:读取系统底层日志 -->    <uses-permission android:name="android.permission.READ_LOGS"/>    <!-- 读取电话状态:访问电话状态  -->    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>    <!--读取短信内容:读取短信内容  -->    <uses-permission android:name="android.permission.READ_SMS"/>    <!-- 读取同步设置:读取同步设置,读取Google在线同步设置 -->    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>    <!-- 读取同步状态:读取同步状态,获得Google在线同步状态 -->    <uses-permission android:name="android.permission.READ_SYNC_STATS"/>    <!-- 重启设备:允许程序重新启动设备  -->    <uses-permission android:name="android.permission.REBOOT"/>    <!--开机自动允许:允许程序开机自动运行  -->    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>    <!--接收彩信:接收彩信  -->    <uses-permission android:name="android.permission.RECEIVE_MMS"/>    <!-- 接收短信:接收短信 -->    <uses-permission android:name="android.permission.RECEIVE_SMS"/>    <!-- 接收Wap Push:接收WAP PUSH信息 -->    <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH"/>    <!-- 录音:录制声音通过手机或耳机的麦克 -->    <uses-permission android:name="android.permission.RECORD_AUDIO"/>    <!-- 排序系统任务:重新排序系统Z轴运行中的任务 -->    <uses-permission android:name="android.permission.REORDER_TASKS"/>    <!-- 结束系统任务:结束任务通过restartPackage(String)方法,该方式将在外来放弃 -->    <uses-permission android:name="android.permission.RESTART_PACKAGES"/>    <!-- 发送短信:发送短信 -->    <uses-permission android:name="android.permission.SEND_SMS"/>    <!-- 设置Activity观察:设置Activity观察器一般用于monkey测试 -->    <uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER"/>    <!-- 设置闹铃提醒:设置闹铃提醒 -->    <uses-permission android:name="android.permission.SET_ALARM"/>    <!-- 设置总是退出:设置程序在后台是否总是退出 -->    <uses-permission android:name="android.permission.SET_ALWAYS_FINISH"/>    <!--设置动画缩放:设置全局动画缩放 -->    <uses-permission android:name="android.permission.SET_ANIMATION_SCALE"/>    <!-- 设置调试程序:设置调试程序,一般用于开发 -->    <uses-permission android:name="android.permission.SET_DEBUG_APP"/>    <!-- 设置屏幕方向:设置屏幕方向为横屏或标准方式显示,不用于普通应用 -->    <uses-permission android:name="android.permission.SET_ORIENTATION"/>    <!-- 设置应用参数:设置应用的参数,已不再工作具体查看addPackageToPreferred(String) 介绍 -->    <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"/>    <!-- 设置进程限制:允许程序设置最大的进程数量的限制 -->    <uses-permission android:name="android.permission.SET_PROCESS_LIMIT"/>    <!-- 设置系统时间:设置系统时间 -->    <uses-permission android:name="android.permission.SET_TIME"/>    <!--设置系统时区:设置系统时区  -->    <uses-permission android:name="android.permission.SET_TIME_ZONE"/>    <!-- 设置桌面壁纸:设置桌面壁纸 -->    <uses-permission android:name="android.permission.SET_WALLPAPER"/>    <!-- 设置壁纸建议:设置壁纸建议 -->    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>    <!-- 发送永久进程信号:发送一个永久的进程信号 -->    <uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES"/>    <!-- 状态栏控制:允许程序打开、关闭、禁用状态栏 -->    <uses-permission android:name="android.permission.STATUS_BAR"/>    <!-- 访问订阅内容:访问订阅信息的数据库 -->    <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ"/>    <!-- 写入订阅内容:写入或修改订阅内容的数据库 -->    <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE"/>    <!-- 显示系统窗口:显示系统窗口 -->    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>    <!-- 更新设备状态:更新设备状态 -->    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>    <!-- 使用证书:允许程序请求验证从AccountManager -->    <uses-permission android:name="android.permission.USE_CREDENTIALS"/>    <!-- 使用SIP视频:允许程序使用SIP视频服务 -->    <uses-permission android:name="android.permission.USE_SIP"/>    <!-- 使用振动:允许振动 -->    <uses-permission android:name="android.permission.VIBRATE"/>    <!-- 唤醒锁定:允许程序在手机屏幕关闭后后台进程仍然运行 -->    <uses-permission android:name="android.permission.WAKE_LOCK"/>    <!-- 写入GPRS接入点设置:写入网络GPRS接入点设置 -->    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>    <!-- 写入日程提醒:写入日程,但不可读取 -->    <uses-permission android:name="android.permission.WRITE_CALENDAR"/>    <!-- 写入联系人:写入联系人,但不可读取 -->    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>    <!--写入Google地图数据:允许程序写入Google Map服务数据  -->    <uses-permission android:name="android.permission.WRITE_GSERVICES"/>    <!-- 写入收藏夹和历史记录:写入浏览器历史记录或收藏夹,但不可读取 -->    <uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS"/>    <!-- 读写系统敏感设置:允许程序读写系统安全敏感的设置项 -->    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>    <!-- 读写系统设置:允许读写系统设置项 -->    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>    <!-- 编写短信:允许编写短信 -->    <uses-permission android:name="android.permission.WRITE_SMS"/>    <!-- 写入在线同步设置:写入Google在线同步设置 -->    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>

AndroidManifest--你真的理解了吗?
几种常用BroadcastReceiver   
关于那些Android中不常用的设置属性
Android AndroidManifest 清单文件以及权限详解
android:exported 属性详解

0 0
原创粉丝点击