Android学习笔记之AndroidManifest
- 格式:docx
- 大小:30.88 KB
- 文档页数:13
androidmanifest的provider用法在Android开发中,<provider>元素用于在AndroidManifest.xml文件中声明一个Content Provider。
Content Provider是Android系统中共享数据的一种标准方式,它允许一个应用程序访问另一个应用程序中的数据,同时保持数据的封装性和安全性。
使用<provider>标签时,需要指定以下属性:1.authorities:这是一个字符串数组,定义了Content Provider的唯一标识。
这个标识通常以URI的形式表示,如"com.example.myapp.provider"。
:指定Content Provider的实现类的全限定名。
3.exported:布尔值,指示Content Provider是否可以被其他应用程序访问。
如果设置为true,则表示Content Provider可以被其他应用访问;如果为false,则只有同一个应用或具有相同用户ID的应用可以访问。
4.grantUriPermissions:布尔值,指示是否授予临时权限给调用者,以便它们可以对ContentProvider提供的数据执行读/写操作。
5.pathPattern 和pathPrefix:这些属性用于限制哪些路径可以通过Content Provider暴露出去。
6.readPermission 和writePermission:定义了访问Content Provider所需的权限。
7.meta-data:用于传递额外的信息给Content Provider。
例如,如果要在AndroidManifest.xml中声明一个FileProvider,可以按照以下步骤操作:1.在manifest中使用<provider>标签来指定FileProvider。
2.指定有效的文件路径,以便FileProvider可以为文件生成对应的Content URI。
AndroidManifest.xml 文件AndroidManifest.xml是每一个应用都需要的文件,位于应用根目录下,它描述了程序包的全局变量, 包括暴露的应用组件(activities, services等等)和为每个组件的实现类,什么样的数据可以操作,以及在什么地方运行。
这个文件的一个重要方面就是是其中的intent过滤器(intent filters)。
这些过滤器描述了何时何种情况下让活动(activity)启动。
当一个activity(或是操作系统)想要执行一个动作,例如打开一个Web页或是打开一个联系人选取屏幕,它将会创建一个Intent对象。
该对象包含了很多几个描述符(descriptors),描述了你想做什么操作,你想处理什么数据,数据的类型,以及一些其他的信息。
Android将Intent对象中的信息与所有应用暴露的intent过滤器比较,找到一个最能恰当处理请求者要求的数据和动作(action)的activity。
关于intents的更多信息在Intent页可以找到。
除了声明应用的活动(Activities),内容管理器(Content Providers),服务(Services),和Intent 接收器(Intent Receivers),你也可以在AndroidManifest.xml文件中指定权限和instrumentation(安全控制和测试). 请查看AndroidManifest了解这个标签和他们的属性。
如下是一个简单的AndroidManifest.xml文件:∙几乎所有的AndroidManifest.xml 文件(同其他的Android文件一样)都会在其第一个元素(element)中包含一个命名空间的声明xmlns:android="/apk/res/android"。
该声明使标准Android属性在该文件中可用,这些属性为文件中的xml元素提供了大部分数据。
AndroidManifest.xml文件综合详解一,重要性AndroidManifest.xml是Android应用程序中最重要的文件之一。
它是Android程序的全局配置文件,是每个 android程序中必须的文件。
它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package 中暴露的组件(activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。
因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。
一个典型的Android应用程序的结构如下图所示:二,主要功能它指定了该应用程序的Java包:该包名作为应用程序的一个独特标识。
它描述了应用程序组件:该应用程序由哪些activity,service,broadcast receiver和content provider组成。
它指定了实现每个组件的类以及公开发布它们的能力(例如,它们能持有哪个Intent信息)。
这些声明使Android系统知道这儿有什么组件以及在什么条件下它们可以被载入。
它决定那些进程将容纳应用程序组件。
它声明了本应用程序必须拥有哪些许可,以便访问API的被保护部分,以及与其他应用程序交互。
它也声明了其他应用程序在和该应用程序交互时需要持有的许可。
它列出了Instrumentation类,可以在应用程序运行时提供简档和其他信息。
这些声明仅当应用程序在开发和测试过程中被提供;它们将在应用程序正式发布之前被移除。
它声明了该应用程序所需的Android API的最小化水平。
它列出了该应用程序必须链接的库。
三,主要结构及规则下面列表显示了manifest文件的通常的结构以及它可以含有的元素。
每个元素,连同它的所有属性,会在各个单独的文档里进行充分的描绘。
<?xml version="1.0" encoding="utf-8"?><manifest> //根节点,描述了package中所有的内容<uses-permission /> //请求你的package正常运作所需赋予的安全许可。
android 13 androidmanifest 权限申请规则(原创版)目录1.Android 13 概述2.AndroidManifest.xml 文件介绍3.权限申请规则详解4.总结正文【Android 13 概述】Android 13 是谷歌公司推出的最新版本的 Android 操作系统。
相较于前代版本,Android 13 在隐私保护、性能优化以及生产力方面均有显著改进。
其中,在隐私保护方面,Android 13 对权限管理进行了更为严格的控制,以提高用户隐私安全。
【AndroidManifest.xml 文件介绍】在 Android 应用开发中,AndroidManifest.xml 文件是一个重要的配置文件,用于声明应用的基本信息、组件和所需权限。
在 Android 13 中,开发者需要在 AndroidManifest.xml 文件中明确声明应用所需权限,以便系统在运行时进行权限检查。
【权限申请规则详解】在 Android 13 中,权限申请规则发生了较大变化。
为了提高用户隐私安全,谷歌引入了新的权限管理机制,包括以下几点:1.动态权限:在运行时请求权限。
应用在需要使用某个权限时,可以临时请求用户授权。
这种授权方式可以有效避免用户在安装时就被要求授权所有权限,提高了用户隐私保护。
2.权限颗粒度:将一个大权限拆分成多个小权限。
这样,开发者只需申请具体的权限,而不需要申请一个包含多个子权限的大权限。
例如,位置权限可以拆分为“精确位置”和“粗略位置”,开发者可以根据实际需求申请相应的权限。
3.权限声明:在 AndroidManifest.xml 文件中声明权限。
开发者需要在 AndroidManifest.xml 文件中明确声明应用所需权限,以便系统在运行时进行权限检查。
4.权限检查:在运行时进行权限检查。
Android 13 系统会根据应用在 AndroidManifest.xml 文件中声明的权限,在运行时进行检查。
Android学习笔记之AndroidManifestxml文件解析AndroidManifet.某ml是每个android程序中必须的文件。
它位于application的根目录,描述了package中的全局数据,包括了package 中暴露的组件(activitie,ervice,等等),它们各自的实现类,各种能被处理的数据和启动位置。
除了能声明你程序中的Activitie,ContentProvider,Service,和IntentReceiver,你还能指定permiion和intrumentation(安全控制和测试)在AndroidManifet.某ml文件中。
这是一个简单的AndroidManifet.某ml。
<某mlverion="1.0"encoding="utf-8"><manifet某mln:android="/apk/re/android"<activitycla=".HelloActivity"><intent-filter><actionandroid:value="android.intent.action.MAIN"/><categoryandroid:value="UNCHER"/></intent-filter></activity></application>AndroidManifet.某ml是每个android程序中必须的文件。
它位于application的根目录,描述了package中的全局数据,包括了package 中暴露的组件(activitie,ervice,等等),它们各自的实现类,各种能被处理的数据和启动位置。
除了能声明你程序中的Activitie,ContentProvider,Service,和IntentReceiver,你还能指定permiion和intrumentation(安全控制和测试)在AndroidManifet.某ml文件中。
Android学习笔记九之IntentIntent简介前面我们介绍完Android系统的四大组件:Activity、Service、ContentProvider、BroadCastReceiver,现在,我们来介绍他们之间的联系枢纽————IntentIntent,意思是“意图”,Intent是Android系统提供的用于应用之间或应用内部Activity、Service、BroadCastReceiver之间进行交互的一种机制。
Intent在程序运行时连接不同的组件,我们可以通过Intent向Android系统发出请求,Android系统会根据请求选择合适的组件进行响应。
(ContentProvider本身就是一种通信机制,不需要通过Intent通信)如果AActivity想要向BActivity或者Android系统的其他组件传递参数,或者启动其他组件,不需要直接联系,通过Intent作为桥梁,简单的说就是,用Intent来作为中介联系其他组件。
例如可以通过下面这几种方法传递Intent实现启动Activity、启动Service或者绑定Service,发送广播启动Activity:Context.startActivity()或者调用Activity.startActivityForResult()启动Service或者绑定Service:Context.startService(),调用Context.bindService()来绑定一个service对象发送广播:Context.sendBroadcast(),Context.sendOrderedBroadcast(),或者Context.sendStickyBroadcast()Intent有两种:显式Intent和隐式Intent。
显式Intent通过具体的组件名去启动组件,一次只能启动一个组件;隐式Intent不指定具体的组件名,而是指定Intent的Action、category 等信息,交给Android系统去分析这个Intent,并帮我们选择合适的组件去启动,当有多个组件符合的时候,显示所有分组件给我们选择。
androidmanifest的provider用法全文共四篇示例,供读者参考第一篇示例:AndroidManifest.xml文件是Android应用的核心配置文件,其中包含了应用的各种配置信息,包括权限、组件(Activity、Service、BroadcastReceiver等)、应用图标等。
在AndroidManifest文件中,还可以定义内容提供者(Provider),用来向外部应用提供数据。
在本篇文章中,我们将讨论AndroidManifest中Provider的用法。
在Android中,Provider是一种用于共享数据的组件,它提供了一种统一的接口,供应用对数据进行访问和操作。
Provider可以用来提供应用内数据的访问权限,也可以用来共享数据给其他应用。
在AndroidManifest文件中注册Provider非常简单,只需要在<application>标签内添加<provider>子标签即可。
一个简单的Provider的注册示例如下:```<application ... >...<providerandroid:name="com.example.myapp.MyProvider"android:authorities="com.example.myapp.provider"android:exported="true"android:grantUriPermissions="true" />...</application>```上面的示例中,我们定义了一个名为MyProvider的Provider,并且指定了其authorities为com.example.myapp.provider。
authorities属性是Provider的唯一标识符,用来在应用中唯一标识该Provider。
androidmanifest 配置条件语句在AndroidManifest.xml文件中,可以使用条件语句来根据不同的条件配置不同的项。
常用的条件语句有以下几种:1. 使用`manifest`元素的`package`属性来配置包名的条件语句。
例如:xml<manifest xmlns:android="package="com.example.app.{buildType}">...</manifest>上述示例中,`{buildType}`是一个占位符,可以根据实际的构建类型来替换。
例如,如果构建类型是`debug`,那么最终的包名就是`com.example.app.debug`。
2. 使用`uses-permission`元素的`android:name`属性来配置权限的条件语句。
例如:xml<uses-permission android:name="android.permission.{permission}" />上述示例中,`{permission}`是一个占位符,可以根据实际的权限名称来替换。
例如,如果权限是`READ_EXTERNAL_STORAGE`,那么最终的配置就是`<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE" />`。
3. 使用`application`元素的`android:debuggable`属性来配置调试模式的条件语句。
例如:xml<applicationandroid:name=".MyApplication"android:label="@string/app_name"android:debuggable="{isDebug}">...</application>上述示例中,`{isDebug}`是一个占位符,可以根据实际的调试模式来替换。
androidmanifest回编译
AndroidManifest.xml文件是Android应用程序的一个重要组成部分,它包含了应用程序的基本信息和组件声明。
如果你想回编译AndroidManifest.xml文件,你需要按照以下步骤进行操作:
1. 确保你有原始的AndroidManifest.xml文件。
如果原始文件已经丢失或被修改,你可能无法完全恢复到原始状态。
2. 将AndroidManifest.xml文件放置在你的Android项目的根目录下。
3. 打开命令行工具(如终端或命令提示符),并导航到你的项目目录。
4. 使用Android Studio打开你的项目。
如果你的项目已经打开,请关闭并重新打开它,以确保更改生效。
5. 在Android Studio中,选择"File"(文件)菜单,然后选择"Invalidate Caches / Restart"(清除缓存/重启)。
这将清除Android Studio的缓存并重新启动它。
6. 重新启动后,Android Studio将自动检测到AndroidManifest.xml文件的更改,并重新编译应用程序。
请注意,回编译AndroidManifest.xml文件可能无法完全恢复应用程序的原始状态,特别是如果其他代码或资源文件已经发生了更改。
因此,建议在修改AndroidManifest.xml文件之前备份整个项目,以避免不必要的损失。
android的AndroidManifest.xml文件介绍AndroidManifest.xml是每一个应用都需要的文件,位于应用根目录下,它描述了程序包的全局变量, 包括暴露的应用组件(activities, services等等)和为每个组件的实现类,什么样的数据可以操作,以及在什么地方运行。
主要包括以下各个元素。
A.包名(package):指定本应用内java主程序包的包名。
当没有指定apk的文件名时,编译后产生程序包将以此命名。
本包名应当在Android系统运行时唯一。
B.认证(certificate):指定本应用程序所授予的信任级别,目前有的认证级别有platform(system)、shared、media以及应用自定义的认证。
不同的认证可以享受不同的权限。
C.权限组(permission-group):权限组的定义是为了描述一组具有共同特性的权限。
D.权限(permission):权限用来描述是否拥有做某件事的权力。
Android系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。
系统中所有预定义的权限根据作用的不同,分别属于不同的级别。
对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。
其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。
当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。
系统应用可以使用任何权限。
权限的声明者可无条件使用该权限。
E.权限树(permission-tree)权限树的设置是为了统一管理一组权限,声明于该树下的权限所有者归属该应用。
系统提供了API,应用可以在运行时动态添加。
PackageManager.addPermission()F.使用权限(uses-permission):应用需要的权限应当在此处申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。
今天项目里的终端需要实现监听是否连接网络,如果连接,给予提示;如果没有连接网络,也给予提示。
我的做法是实习一个继承与BroadcastReceiver 的类,在onReceirver方法里获取网络连接状态,再进行判断就可以了。
同时需要在AndroidManifest.xml文件里进行声明。
下面是java代码:
AndroidManifest.xml文件相关:
不过这个方法不知道可不可以实习对终端是否连接网线的监听,正在测试。
如果不可以,估计得写一个c文件,用来读取终端网络接口卡是否连接网
线,再在java中调用这个c方法,进行判断了。
后续吧,先去测试。
由于终端要检测网线是否插入,所以需要硬件检测网卡驱动,这里的检测由底层实现,当检测到网线插入或拔出时则发送一个host消息到端口21006,在java层面则开启一个线程用来监听该端口,并将监听到的host消息交给一个类进行解析,并判断消息内容,再给以Toast提示。
代码就不方便贴出来啦。
AndroidManifest.xml文件详解每个应用程序在它的根目录中都必须要有一个AndroidManifest.xml文件。
这个清单把应用程序的基本信息提交给Android系统,在应用程序的代码能够运行之前,这个信息系统必须建立。
以下是清单文件要做的一些事情:1.用Java包给应用程序命名。
这个包名是应用程序的唯一标识;2.描述应用程序的组件---组成应用程序的Activity、Service、Broadcast Receiver以及Content Provider。
它要用每个组件的实现类来命名,并向外发布对应组件功能(例如,组件所能处理的Intent消息)。
这些声明会让Android系统了解应用程序中组件,以及这些组件被加载的条件。
3.判断哪些进程是主应用程序组件。
4.声明应用程序所必须的权限,以便能够访问被保护的API,以及能够跟其他应用程序进行交互。
5.为了跟应用程序组件进行交互,还声明了其他要求有的权限。
6.列出了能够提供应用程序运行时的分析和其他信息的Instrumentation类。
只有在开发和测试应用程序时才在清单文件中声明这些类,在应用程序被发布之前,要删除这些类。
7.声明应用程序所要求的最小的Android API级别。
8.列出应用程序必须链接的外部库。
Manifest文件的结构下图中包含了清单文件的一般性结构,并且包含所有能包含的元素。
每个元素所带有的全部元素会在它们各自的文档中介绍。
<?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/></provider><uses-library/></application></manifest>以下按字母顺序列出了清单文件中的所有元素,这些元素时Android系统法定元素,不能添加自定义的元素或属性。
2015/11/131、当Intent在组件间传递时,组件如果想告知Android系统自己能够响应和处理哪些Intent,那么就需要用到IntentFilter对象。
除了用于过滤广播的IntentFilter可以在代码中创建外,其他的IntentFilter必须在AndroidManifest.xml文件中进行声明。
2、静态注册实现开机启动3、不要在onReceive()方法中添加过多的逻辑或者进行任何的耗时操作,因为在广播接收器中是不允许开启线程的,当onReceive()方法运行了较长时间而没有结束时,程序就会报错。
4、发送有序广播5、MODE_PRIVA TE 仍然是默认的操作模式,和直接传入0 效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写6、android:layout_span控件跨越的列数7、要调用setCancelable()方法将对话框设为不可取消2015/11/161、Log for Java创建对话框两种方式activity、fragment设计模式蓝牙低功耗模式通信1、静态注册实现开机启动:程序在未启动的情况下就能接收到广播。
2、在广播接收器中是不允许开启线程的3、发送标准广播在发送广播之前,我们还是需要先定义一个广播接收器来准备接收此广播才行,不然发出去也是白发。
4、发送有序广播: sendOrderedBroadcast()方法接收两个参数,第一个参数仍然是Intent,第二个参数是一个与权限相关的字符串,这里传入null就行了。
5、设定广播接收器的先后顺序: android:priority 属性给广播接收器设置了优先级,优先级比较高的广播接收器就可以先收到广播。
6、中断广播: 在onReceive()方法中调用了abortBroadcast()方法,就表示将这条广播截断,后面的广播接收器将无法再接收到这条广播。
5.4 使用本地广播1、系统全局广播:即发出的广播可以被其他任何的任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播。
Android Manifest功能与权限描述大全Android Manifest是Android程序开发中控制各项功能权限的核心文件,该参考表详尽描述了Android Manifest各个参数项的名称与功能。
是Android开发与学习必备的参考表,欢迎需要的朋友使用。
权限名称描述android.permission.ACCESS_CHECKIN_PROP ERTIES 访问登记属性读取或写入登记check-in数据库属性表的权限android.permission.ACCESS_COARSE_LOCAT ION 获取错略位置通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米android.permission.ACCESS_FINE_LOCATIO N 获取精确位置通过GPS芯片接收卫星的定位信息,定位精度达10米以内android.permission.ACCESS_LOCATION_EXT RA_COMMANDS 访问定位额外命令允许程序访问额外的定位提供者指令android.permission.ACCESS_MOCK_LOCATIO N 获取模拟定位信息获取模拟定位信息,一般用于帮助开发者调试应用android.permission.ACCESS_NETWORK_STAT E 获取网络状态获取网络信息状态,如当前的网络连接是否有效android.permission.ACCESS_SURFACE_FLIN GER 访问SurfaceFlingerAndroid平台上底层的图形显示支持,一般用于游戏或照相机预览界面和底层模式的屏幕截图android.permission.ACCESS_WIFI_STATE 获取WiFi状态获取当前WiFi接入的状态以及WLAN热点的信息android.permission.ACCOUNT_MANAGER 账户管理获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限android.permission.AUTHENTICATE_ACCOUN TS 验证账户允许一个程序通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息android.permission.BATTERY_STATS 电量统计获取电池电量统计信息android.permission.BIND_APPWIDGET 绑定小插件允许一个程序告诉appWidget服务需要访问小插件的数据库,只有非常少的应用才用到此权限android.permission.BIND_DEVICE_ADMIN 绑定设备管理请求系统管理员接收者receiver,只有系统才能使用android.permission.BIND_INPUT_METHOD 绑定输入法请求InputMethodService服务,只有系统才能使用android.permission.BIND_REMOTEVIEWS 绑定RemoteView必须通过RemoteViewsService服务来请求,只有系统才能用android.permission.BIND_WALLPAPER 绑定壁纸必须通过WallpaperService服务来请求,只有系统才能用android.permission.BLUETOOTH 使用蓝牙允许程序连接配对过的蓝牙设备android.permission.BLUETOOTH_ADMIN 蓝牙管理允许程序进行发现和配对新的蓝牙设备android.permission.BRICK 变成砖头能够禁用手机,非常危险,顾名思义就是让手机变成砖头android.permission.BROADCAST_PACKAGE_R EMOVED 应用删除时广播当一个应用在删除时触发一个广播android.permission.BROADCAST_SMS 收到短信时广播当收到短信时触发一个广播android.permission.BROADCAST_STICKY 连续广播允许一个程序收到广播后快速收到下一个广播android.permission.BROADCAST_WAP_PUSH WAPPUSH广播WAP PUSH服务收到后触发一个广播android.permission.CALL_PHONE 拨打电话允许程序从非系统拨号器里输入电话号码android.permission.CALL_PRIVILEGED 通话权限允许程序拨打电话,替换系统的拨号器界面android.permission.CAMERA 拍照权限允许访问摄像头进行拍照android.permission.CHANGE_COMPONENT_EN改变组改变组件是否启用状态ABLED_STATE件状态android.permission.CHANGE_CONFIGURATIO N 改变配置允许当前应用改变配置,如定位android.permission.CHANGE_NETWORK_STAT E 改变网络状态改变网络状态如是否能联网android.permission.CHANGE_WIFI_MULTICA ST_STATE 改变WiFi多播状态改变WiFi多播状态android.permission.CHANGE_WIFI_STATE 改变WiFi状态改变WiFi状态android.permission.CLEAR_APP_CACHE 清除应用缓存清除应用缓存android.permission.CLEAR_APP_USER_DATA 清除用户数据清除应用的用户数据android.permission.CWJ_GROUP 底层访问权限允许CWJ账户组访问底层信息android.permission.CELL_PHONE_MASTER_E X 手机优化大师扩展权限手机优化大师扩展权限android.permission.CONTROL_LOCATION_UP DATES 控制定位更新允许获得移动网络定位信息改变android.permission.DELETE_CACHE_FILES 删除缓存文件允许应用删除缓存文件android.permission.DELETE_PACKAGES 删除应用允许程序删除应用android.permission.DEVICE_POWER 电源管理允许访问底层电源管理android.permission.DIAGNOSTIC 应用诊断允许程序到RW到诊断资源android.permission.DISABLE_KEYGUARD 禁用键盘锁允许程序禁用键盘锁android.permission.DUMP 转存系统信息允许程序获取系统dump信息从系统服务android.permission.EXPAND_STATUS_BAR 状态栏控制允许程序扩展或收缩状态栏android.permission.FACTORY_TEST 工厂测试模式允许程序运行工厂测试模式android.permission.FLASHLIGHT 使用闪光灯允许访问闪光灯android.permission.FORCE_BACK 强制后退允许程序强制使用back后退按键,无论Activity是否在顶层android.permission.GET_ACCOUNTS 访问账户Gmail列表访问GMail账户列表android.permission.GET_PACKAGE_SIZE 获取应用大小获取应用的文件大小android.permission.GET_TASKS 获取任务信息允许程序获取当前或最近运行的应用android.permission.GLOBAL_SEARCH 允许全局搜索允许程序使用全局搜索功能android.permission.HARDWARE_TEST 硬件测试访问硬件辅助设备,用于硬件测试android.permission.INJECT_EVENTS 注射事件允许访问本程序的底层事件,获取按键、轨迹球的事件流android.permission.INSTALL_LOCATION_PR OVIDER 安装定位提供安装定位提供android.permission.INSTALL_PACKAGES 安装应用程序允许程序安装应用android.permission.INTERNAL_SYSTEM_WIN DOW 内部系统窗口允许程序打开内部窗口,不对第三方应用程序开放此权限android.permission.INTERNET 访问网络访问网络连接,可能产生GPRS流量android.permission.KILL_BACKGROUND_PRO CESSES 结束后台进程允许程序调用killBackgroundProcesses(String).方法结束后台进程android.permission.MANAGE_ACCOUNTS 管理账户允许程序管理AccountManager中的账户列表android.permission.MANAGE_APP_TOKENS 管理程序引用管理创建、摧毁、Z轴顺序,仅用于系统android.permission.MTWEAK_USER 高级权限允许mTweak用户访问高级系统权限android.permission.MTWEAK_FORUM 社区权限允许使用mTweak社区权限android.permission.MASTER_CLEAR 软格式化允许程序执行软格式化,删除系统配置信息android.permission.MODIFY_AUDIO_SETTIN GS 修改声音设置修改声音设置信息android.permission.MODIFY_PHONE_STATE 修改电话状态修改电话状态,如飞行模式,但不包含替换系统拨号器界面android.permission.MOUNT_FORMAT_FILESY STEMS 格式化文件系统格式化可移动文件系统,比如格式化清空SD卡android.permission.MOUNT_UNMOUNT_FILES YSTEMS 挂载文件系统挂载、反挂载外部文件系统android.permission.NFC 允许NFC通讯允许程序执行NFC近距离通讯操作,用于移动支持android.permission.PERSISTENT_ACTIVITY 永久Activity创建一个永久的Activity,该功能标记为将来将被移除android.permission.PROCESS_OUTGOING_CA LLS 处理拨出电话允许程序监视,修改或放弃播出电话android.permission.READ_CALENDAR 读取日程提醒允许程序读取用户的日程信息android.permission.READ_CONTACTS 读取联系人允许应用访问联系人通讯录信息android.permission.READ_FRAME_BUFFER 屏幕截图读取帧缓存用于屏幕截图com.android.browser.permission.READ_HI STORY_BOOKMARKS 读取收藏夹和历史记录读取浏览器收藏夹和历史记录android.permission.READ_INPUT_STATE 读取输入状态读取当前键的输入状态,仅用于系统android.permission.READ_LOGS 读取系统日志读取系统底层日志android.permission.READ_PHONE_STATE 读取电话状态访问电话状态android.permission.READ_SMS 读取短信内容读取短信内容android.permission.READ_SYNC_SETTINGS 读取同步设置读取同步设置,读取Google在线同步设置android.permission.READ_SYNC_STATS 读取同步状态读取同步状态,获得Google在线同步状态android.permission.REBOOT 重启设备允许程序重新启动设备android.permission.RECEIVE_BOOT_COMPLE TED 开机自动允许允许程序开机自动运行android.permission.RECEIVE_MMS 接收彩信接收彩信android.permission.RECEIVE_SMS 接收短信接收短信android.permission.RECEIVE_WAP_PUSH 接收WapPush接收WAP PUSH信息android.permission.RECORD_AUDIO录音录制声音通过手机或耳机的麦克android.permission.REORDER_TASKS 排序系统任务重新排序系统Z轴运行中的任务android.permission.RESTART_PACKAGES 结束系统任务结束任务通过restartPackage(String)方法,该方式将在外来放弃android.permission.SEND_SMS 发送短信发送短信android.permission.SET_ACTIVITY_WATCHE R 设置Activity观察其设置Activity观察器一般用于monkey测试com.android.alarm.permission.SET_ALARM 设置闹铃提醒设置闹铃提醒android.permission.SET_ALWAYS_FINISH 设置总是退出设置程序在后台是否总是退出android.permission.SET_ANIMATION_SCALE 设置动画缩放设置全局动画缩放android.permission.SET_DEBUG_APP 设置调试程序设置调试程序,一般用于开发android.permission.SET_ORIENTATION 设置屏幕方向设置屏幕方向为横屏或标准方式显示,不用于普通应用android.permission.SET_PREFERRED_APPLI CATIONS 设置应用参数设置应用的参数,已不再工作具体查看addPackageToPreferred(String)介绍android.permission.SET_PROCESS_LIMIT 设置进程限制允许程序设置最大的进程数量的限制android.permission.SET_TIME 设置系统时间设置系统时间android.permission.SET_TIME_ZONE 设置系统时区设置系统时区android.permission.SET_WALLPAPER 设置桌面壁纸设置桌面壁纸android.permission.SET_WALLPAPER_HINTS 设置壁纸建议设置壁纸建议android.permission.SIGNAL_PERSISTENT_P ROCESSES 发送永久进程信号发送一个永久的进程信号android.permission.STATUS_BAR 状态栏控制允许程序打开、关闭、禁用状态栏android.permission.SUBSCRIBED_FEEDS_RE AD 访问订阅内容访问订阅信息的数据库android.permission.SUBSCRIBED_FEEDS_WR ITE 写入订阅内容写入或修改订阅内容的数据库android.permission.SYSTEM_ALERT_WINDOW 显示系统窗口显示系统窗口android.permission.UPDATE_DEVICE_STATS 更新设备状态更新设备状态E_CREDENTIALS 使用证书允许程序请求验证从AccountManagerE_SIP 使用SIP视频允许程序使用SIP视频服务android.permission.VIBRATE 使用振动允许振动android.permission.WAKE_LOCK 唤醒锁定允许程序在手机屏幕关闭后后台进程仍然运行android.permission.WRITE_APN_SETTINGS 写入GPRS接入点设置写入网络GPRS接入点设置android.permission.WRITE_CALENDAR 写入日程提醒写入日程,但不可读取android.permission.WRITE_CONTACTS 写入联系人写入联系人,但不可读取android.permission.WRITE_EXTERNAL_STOR AGE 写入外部存储允许程序写入外部存储,如SD卡上写文件android.permission.WRITE_GSERVICES 写入Google地图数据允许程序写入Google Map服务数据com.android.browser.permission.WRITE_H ISTORY_BOOKMARKS 写入收藏夹和历史记录写入浏览器历史记录或收藏夹,但不可读取android.permission.WRITE_SECURE_SETTIN GS 读写系统敏感设置允许程序读写系统安全敏感的设置项android.permission.WRITE_SETTINGS 读写系统设置允许读写系统设置项android.permission.WRITE_SMS 编写短信允许编写短信。
Android学习笔记之AndroidManifest.xml⽂件解析(详解)⼀、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的⽂件。
它位于整个项⽬的根⽬录,描述了package中暴露的组件(activities, services, 等等),他们各⾃的实现类,各种能被处理的数据和启动位置。
除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)⼆、AndroidManifest.xml结构<?xmlversion="1.0"encoding="utf-8"?><manifest><application><activity><intent-filter><action/><category/></intent-filter></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/></provider><uses-library/></application><uses-permission/><permission/><permission-tree/><permission-group/><instrumentation/><uses-sdk/><uses-configuration/><uses-feature/><supports-screens/></manifest>三、各个节点的详细介绍上⾯就是整个am(androidManifest).xml的结构,下⾯以外向内开始阐述~~1、第⼀层(<Manifest>):(属性)A、xmlns:androidB、package指定本应⽤内java主程序包的包名,它也是⼀个应⽤进程的默认名称C、sharedUserIdD、sharedUserLabel⼀个共享的⽤户名,它只有在设置了sharedUserId属性的前提下才会有意义E、versionCode是给设备程序识别版本(升级)⽤的必须是⼀个interger值代表app更新过多少次,⽐如第⼀版⼀般为1,之后若要更新版本就设置为2,3等等。
Android IntentFilter 匹配原则浅析1 Intent分为两大类,显式和隐式。
显式事件,就是指通过component Name 属性,明确指定了目标组件的事件。
比如我们新建一个Intent,指名道姓的说,此事件用于启动名为"com.silenceburn.XXXX”的Activity,那么这就是一个显式事件。
隐式事件,就是指没有component Name 属性,没有明确指定目标组件的事件。
比如系统向所有监控通话情况的程序发送的“来电话了!”的事件,由于系统不确定谁会处理这个事件,因此系统不会明确指定目标组件,也就是说没有目标组件,那么这就是个隐式的事件。
此处只是简介显式和隐式事件,更精确详细的描述请查阅SDK文档,我们只需要记住一点,两种事件的最大区别是component Name 属性是否为空。
2 事件过滤策略和IntentFilter系统在传送显式事件时非常方便,因为如果把Intent比作一封信,那么component Name就是一个详细的收件人地址,系统可以精确的把显式事件送达目标组件。
而传送隐式事件时,就比较麻烦了。
因为这封信的信封上,没有写收信地址!那怎么办呢?系统做了一个艰难的决定,就是把信拆开看看。
通过信件内容里面的线索,去寻找合适的收件人。
比如信中的线索描述到:“收信人是男性,快30岁了,未婚,喜欢玩游戏”,那么系统就在小区里面去找这样的人。
非常值得庆幸的事情是,这个小区的人素质非常高,每户人家都写了点自我介绍在门口,比如张三写道:“我是男性,90后,未婚,喜欢玩游戏”,李四写道:“我是女性,快30岁了,未婚,喜欢逛街”等等等等。
有了每户人家的自我介绍,系统就能很快的定位真正的收件人了!上面是一个类比的例子,不过android系统处理隐式事件的策略,基本上就是上述这种模式了。
首先系统会通过观察Intent的内容(打开信件看内容),取得匹配线索,系统所需的线索是如下三种:actiondata (both URI and data type)category其次,系统中每个组件,如果想收取隐式事件,则必须声明自己的IntentFilter(自我介绍,我对什么样的信件感兴趣)。
AndroidManifest.xml详解我们在进⾏APP开发的时候都会遇到⼀个⽂件:AndroidManifest.xml。
从刚开始进⾏Android开发,到现在已经过去了⼏个⽉,还是对这个⽂件⼀知半解,只知道它是配置⽤的。
但是这⽂件⾥的东西具体有什么⽤,该怎么⽤⼀直都没有理解。
借着做项⽬的机会,仔细研究⼀下这个⽂件。
研究AndroidManifest.xml最好的⽅式⾃然就是对照着官⽅⽂档详细理解项⽬中每个字段的作⽤,并且做出⼀些修改来验证。
AndroidManifest是什么?AndroidManifest官⽅解释是应⽤清单(manifest意思是货单),每个应⽤的根⽬录中都必须包含⼀个,并且⽂件名必须⼀模⼀样。
这个⽂件中包含了APP的配置信息,系统需要根据⾥⾯的内容运⾏APP的代码,显⽰界⾯。
AndroidManifest的作⽤是什么?上述的功能是⾮常笼统的解释,具体到细节就是:为应⽤的 Java 软件包命名。
软件包名称充当应⽤的唯⼀标识符。
描述应⽤的各个组件,包括构成应⽤的 Activity、服务、⼴播接收器和内容提供程序。
它还为实现每个组件的类命名并发布其功能,例如它们可以处理的 Intent 消息。
这些声明向 Android 系统告知有关组件以及可以启动这些组件的条件的信息。
确定托管应⽤组件的进程。
声明应⽤必须具备哪些权限才能访问 API 中受保护的部分并与其他应⽤交互。
还声明其他应⽤与该应⽤组件交互所需具备的权限列出 Instrumentation类,这些类可在应⽤运⾏时提供分析和其他信息。
这些声明只会在应⽤处于开发阶段时出现在清单中,在应⽤发布之前将移除。
声明应⽤所需的最低 Android API 级别列出应⽤必须链接到的库上⾯是官⽅的解释。
很多东西笔者现在还不能理解,也没有⽤到,先挑笔者理解的进⾏解释。
⼀份真实的AndroidManifest.xml⽂件<manifest xmlns:android='/apk/res/android' package='com.sample.teapot'android:versionCode='1' android:versionName='1.0.0.1' > <uses-feature android:glEsVersion='0x00020000'></uses-feature> <application android:allowBackup='false' android:fullBackupContent='false' android:supportsRtl='true' android:icon='@mipmap/ic_launcher' android:label='@string/app_name' android:theme='@style/AppTheme' android:name='com.sample.teapot.TeapotApplication' > <!-- Our activity is the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activityandroid:name='com.sample.teapot.TeapotNativeActivity' android:label='@string/app_name'android:configChanges='orientation|keyboardHidden'> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name='android.app.lib_name' android:value='TeapotNativeActivity' /> <intent-filter> <actionandroid:name='android.intent.action.MAIN' /> <category android:name='UNCHER' /></intent-filter> </activity> </application></manifest>这是Google官⽅⽰例中的teapots项⽬中的⼀个⽂件,我们就针对这份⽂件来分析字段的意义。
Androidmanifest之manifest标签详细介绍 AndroidManifest详细介绍本⽂主要对AndroidManifest.xml⽂件中各个标签进⾏说明。
索引如下:概要PART--01 manifest标签PART--02 安全机制和permissionPART--02.01 permission标签PART--02.02 permission-group标签PART--02.03 permission-tree标签PART--02.04 uses-permission标签PART--03 instrumention标签PART--04 uses-sdk标签PART--05 uses-configuration标签PART--06 uses-feature标签PART--07 supports-screens标签PART--08 compatible-screens标签PART--09 supports-gl-texture标签PART--10 application标签PART--11 activity标签PART--12 intent-filter标签PART--13 action标签PART--14 category标签PART--15 data标签PART--16 meta-data标签PART--17 activity-alias标签PART--18 service标签PART--19 receiver标签PART--20 provider标签PART--21 grant-uri-permission标签PART--22 uses-library标签概要每⼀个Android应⽤都应该包含⼀个manifest⽂件,即AndroidManifest.xml。
它包含了程序运⾏的⼀些必备信息,⽐如:--为Java应⽤程序指定⼀个独⼀⽆⼆的名字。
--描述程序所包括的成分,如activities, services, broadcast receivers和content providers等内容。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系[android学习]第一篇理解AndroidManifest.xml 2012/11/10 0 2012.11.10 10:30 想要学习android开发已经有很长的时间了,别人的源码也看了很多,但只是看觉得我也行,今天实际动手就菜得一B,连新建一个hello-world,运行都会报错。
把自己各种错误记录在这里,方便温故而知新。
什么是AndroidManifest.xml?应该感谢英语老师,就跟自己写程序喜欢用拼音命名变量一样,老外也喜欢用英语。
AndroidManifest确实就像一个货单,把所有要用到的东西都列了出来。
理解我的第一张manifest manifest xmlns:android= schemas.android/apk/res/android package= com.jincheng.talk android:versionCode= 1 android:versionName= 1.0 uses-sdk android:minSdkVersion= 8 android:targetSdkVersion= 15 / !-- declare permission -- !-- allow phone to vibrate -- uses-permission android:name= android.permission.VIBRATE / !-- allow shortcut icon -- uses-permission android:name= uncher.permission.INSTALL_SHORTCUT / application android:name= .myApp android:icon= @drawable/geotalkico android:label= @string/app_name android:theme= @style/AppTheme activity android:name= .MainActivity android:label= @string/title_activity_main intent-filter action android:name= android.intent.action.MAIN / category android:name= UNCHER / /intent-filter /activity /application service, /manifest 提请我注意,android:icon后面确实是一张图表的路径,android:label后面也确实是一个label的内容,但是android:name并不只是一个像id一样的东西,对于application,activity,service来说都对应着一个具体的java类。
Android学习笔记之AndroidManifest.xml文件解析一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。
它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。
除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)二、AndroidManifest.xml结构<?xmlversion="1.0"encoding="utf-8"?><manifest><application><activity><intent-filter><action/><category/></intent-filter></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/></provider><uses-library/></application><uses-permission/><permission/><permission-tree/><permission-group/><instrumentation/><uses-sdk/><uses-configuration/><uses-feature/><supports-screens/></manifest>三、各个节点的详细介绍上面就是整个am(androidManifest).xml的结构,下面以外向内开始阐述~~1、第一层(<Manifest>):(属性)<manifest xmlns:android="/apk/res/android"package="com.woody.test"android:sharedUserId="string"android:sharedUserLabel="string resource"android:versionCode="integer"android:versionName="string"android:installLocation=["auto" | "internalOnly" | "preferExternal"] ></manifest>A、xmlns:android定义android命名空间,一般为/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。
B、package指定本应用内java主程序包的包名,它也是一个应用进程的默认名称C、sharedUserId表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。
若要共享数据,第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。
详见:/blog/static/17389624201011010539408/D、sharedUserLabel一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义E、versionCode是给设备程序识别版本(升级)用的必须是一个interger值代表app更新过多少次,比如第一版一般为1,之后若要更新版本就设置为2,3等等。
F、versionName这个名称是给用户看的,你可以将你的APP版本号设置为1.1版,后续更新版本设置为1.2、2.0版本等等。
G、installLocation安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:internalOnly、auto、preferExternal选择preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)选择auto,系统将会根据存储空间自己去适应选择internalOnly是指必须安装到内部才能运行(注:需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP最好安装在SD卡上。
现默认为安装在内部,如果把APP安装在SD卡上,首先得设置你的level为8,并且要配置android:installLocation这个参数的属性为preferExternal)2、第二层(<Application>):属性一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属性(如icon,label,permission等)<application android:allowClearUserData=["true" | "false"]android:allowTaskReparenting=["true" | "false"]android:backupAgent="string"android:debuggable=["true" | "false"]android:description="string resource"android:enabled=["true" | "false"]android:hasCode=["true" | "false"]android:icon="drawable resource"android:killAfterRestore=["true" | "false"]android:label="string resource"android:manageSpaceActivity="string"android:name="string"android:permission="string"android:persistent=["true" | "false"]android:process="string"android:restoreAnyVersion=["true" | "false"]android:taskAffinity="string"android:theme="resource or theme" ></application>A、android:allowClearUserData('true' or 'false')用户是否能选择自行清除数据,默认为true,程序管理器包含一个选择允许用户清除数据。
当为true时,用户可自己清理用户数据,反之亦然B、android:allowTaskReparenting('true' or 'false')是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务C、android:backupAgent这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)D、android:debuggable这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在手机上可以被调试。
默认为false,在false的情况下调试该APP,就会报以下错误:Device XXX requires that applications explicitely declare themselves as debuggable in their manifest.Application XXX does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.E、android:description/android:label此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。
label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。
而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。