手持终端
Eclipse平台下Android开发环境的搭建
PhoneGap配置到Eclipse开发环境
使用PhoneGap开发Android应用程序
PhoneGap3.0以上版本配置到Eclipse开发环境
使用PhoneGap3.0版本开发Android应用程序
PhoneGap3.0的第三方Android插件
Cordova配置到Android Studio开发环境
Android系统基本架构
Android的字符串颜色图片样式
Android的常用控件及菜单
Android的消息提示及传递
Android系统的组件通信
Android系统的Service
Android的广播消息接收
Android的数据存储与访问
Android系统的网络应用
Android图形图像处理
Android的Fragment框架
Android系统的并发编程
Java源文件结构与保留字
Java语言的数据类型与变量
Java的运算符与流程控制
Java语言的数组及操作
Java面向对象编程
Java的常用类
Android开发常用工具及命令
Android应用程序权限管理
Android系统提供的R类内置资源
Android系统的控件类及其方法
Android系统的菜单类及其方法
Android系统的对话框
Android应用程序模型及组件
Android的绘图类及方法
Android系统的动画效果
Android的数据库操作
Android的多媒体功能
Android系统照相机的使用
Android的文本朗读TTS
获取Android系统信息
Android系统的电话操作
Android系统的定位
Android系统的传感器
AndroidManifest.xml文件中包含了Android中所使用的Activity、Service和Receiver等,在该文件中可以通过<intent-filter>设置默认启动的Activity。AndroidManifest.xml文件中重要元素有:
元素 |
说明 |
manifest |
根节点,描述package中所有的内容 |
xmlns:android |
包含命名空间的声明 |
package |
声明应用程序包 |
uses-sdk |
应用程序所使用的Android SDK版本 |
application |
包含package中Application级别组件声明的根节点 |
android:icon |
应用程序的图标 |
android:label |
应用程序的名称 |
activity |
与用户交互的主要工具,是打开应用程序的初始界面 |
android:name |
Activity的名称 |
intent-filter |
声明指定的一组组件支持的Intent值 |
action |
组件支持的Intent Action |
category |
组件支持的Intent Category,通常用来指定应用程序默认启动的Activity |
在Android程序中,每一个Activity都需要在AndroidManifest.xml文件中有一个对应的<activity>标记;每一个Service也需要在其中有一个对应的<service>标记。
AndroidManifest.xml文件的基本结构为:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>
<uses-sdk/>
<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/>
<uses-configuration/>
</application>
</manifest>
<uses-feature>元素:
通过<uses-feature>元素可以为应用程序指定其所需的硬件功能,任何没有这些特定功能的设备在Google Play中查询时会被过滤掉,就看不到这些应用程序。<uses-feature>元素格式:
<uses-feature android:name="string" android:required={"true"|"false"} android:glEsVersion="integer"/>
其中,name属性指定功能,required属性指定该功能是必须还是可有可无,glEsVersion指定OpenGL版本。比如多点触摸功能:
<uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="true"/>
如果指定要使用OpenGL ES 2.0,就需要如下指定:
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
如果要使用接入usb接口的外部设备,比如游戏控制器,需要添加:
<uses-feature android:name="android.hardware.usb.host" android:required="false"/>
Google Play使用的过滤器不仅有<uses-feature>、<uses-sdk>元素和<uses-permission>元素,还有其他几种:
<support-screen>:声明应用程序可以运行的屏幕大小和密度
<uses-configuration>:声明对设备上的输入配置类型的支持,例如键盘、软键盘、触摸屏、轨迹球等
<uses-library>:声明应用程序所依赖的第三方库
Android应用程序权限明确指明了这个应用程序具备访问哪些资源的能力,需要在应用程序的AndroidManifest.xml文件中设置。在安装该应用程序时,向用户指明了该应用程序需要使用哪些资源,用户可以根据需要来选择是否安装该应用程序。
应用程序权限在Manifest.permission类中提供,见下表:
权限 |
说明 |
ACCESS_CHECKIN_PROPERTIES |
允许在登入数据库时,读/写其中的属性表并上传改变的值 |
ACCESS_COARSE_LOCATION |
允许应用访问范围性的定位,例如WIFI |
ACCESS_FINE_LOCATION |
允许应用访问精确性的定位,例如GPS |
ACCESS_LOCATION_EXTRA |
允许应用访问额外的提供定位的指令 |
ACCESS_MOCK_LOCATION |
允许应用创建用于测试的模拟的定位提供者 |
ACCESS_NETWORK_STATE |
允许应用访问网络上的信息 |
ACCESS_SURFACE_FLINGER |
允许应用使用低版本视图的特征 |
ACCESS_WIFI_STATE |
允许应用访问关于WIFI网络的信息 |
ACCOUNT_MANAGER |
允许应用进入账户认证 |
ADD_SYSTEM_SERVICE |
允许程序发布系统级服务 |
AUTHENTICATE_ACCOUNTS |
允许应用为account_manager扮演一个账户认证系统 |
BATTERY_STATS |
允许应用来统计电源信息 |
BIND_APPWIDGET |
允许应用来告诉App Widget,哪个应用能够访问其数据 |
BIND_DEVICE_ADMIN |
必须通过Administrator的请求来确保只有系统能够与之交流 |
BIND_INPUT_METHOD |
必须通过Input Method Service的请求来确保只有系统能够与之绑定 |
BIND_WALLPAPER |
必须通过Wallpaper Service的请求来确保只有系统能够与之绑定 |
BLUETOOTH |
允许应用去连接蓝牙设备 |
BLUETOOTH_ADMIN |
允许应用找到与之绑定的蓝牙设备 |
BRICK |
被请求废止设备,该项应用用起来非常危险 |
BROADCAST_PACKAGE |
允许应用发出一个程序包被移除的广播消息 |
BROADCAST_SMS |
允许应用发出一个收到短信的消息 |
BROADCAST_STICKY |
允许应用发出一个与Intent相连的消息 |
BROADCAST_WAP_PUSH |
允许应用发出一个收到WAP PUSH的广播消息 |
CALL_PHONE |
允许应用启动一个用户确认电话被拨打的拨打程序,而不通过拨打电话的用户界面 |
CALL_PRIVILEGED |
允许应用启动一个用户确认电话被拨打的任意号码(包括紧急号码)的拨打,而不通过拨打电话的用户界面 |
CAMERA |
能够启动照相机设备的请求 |
CHANGE_COMPONENT |
允许应用程序启用或禁用其他组件 |
CHANGE_CONFIGURATION |
允许应用修改当前的配置,例如本地设置 |
CHANGE_NETWORK_STATE |
允许应用改变网络的连接状态 |
CHANGE_WIFI_MULTICAST |
允许应用进入WIFI的组播方式 |
CHANGE_WIFI_STATE |
允许应用改变WIFI的连接状态 |
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 |
允许应用找到关于当前或最近运行的任务和在哪些activities里运行 |
GLOBAL_SEARCH |
内容提供者可以使用这个权限来允许应用程序对其内部的数据使用全程搜索 |
HARDWARE_TEST |
允许访问硬件及周边设备 |
INJECT_EVENTS |
允许应用注入用户事件(如键盘、触摸)到事件中,然后提供给任意的窗口 |
INSTALL_LOCATION_PROVIDER |
允许应用安装一个位置提供商到位置管理器 |
PACKAGES |
允许应用安装程序包 |
INTERNAL_SYSTEM_WINDOW |
允许应用打开被部分系统用户接口使用的窗口 |
INTERNET |
允许应用打开网络套接口 |
KILL_BACKGROUND |
允许应用去呼叫kill Background Processes(String)方法 |
MANAGE_ACCOUNTS |
允许应用去管理账户管理者中的重要清单 |
MANAGE_APP_TOKENS |
允许应用去管理(如创建、销毁、顺序)在窗口管理者中的应用 |
MASTER_CLEAR |
允许应用清除一切数据 |
MODIFY_AUDIO_SETTING |
允许应用修改全局音频设定 |
MODIFY_PHONE_STATE |
允许改变拨打电话的状态、电源等 |
MOUNT_FORMAT_FILESYSTEMS |
允许格式化可移除的存储仓库的文件系统 |
MOUNT_UNMOUNT |
允许安装或解除可移除的存储设备的文件系统 |
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_SETTING |
允许应用读取同步的设置 |
READ_SYNC_STATS |
允许应用读取同步的统计数据 |
REBOOT |
重新启动设备的请求 |
RECEIVE_BOOT_COMPLETED |
允许应用接收在系统完成启动后发出的ACTION_BOOT |
RECEIVE_MMS |
允许应用去监听多媒体信息并记录,以及对其进行处理 |
RECEIVE_SMS |
允许应用去监听短消息并记录,以及对其进行处理 |
RECEIVE_WAP_PUSH |
允许应用监听WAP push信息 |
RECORD_AUDIO |
允许应用记录音频信息 |
RECORD_TACKS |
允许应用改变任务的关系位置 |
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_FOREGROUND |
允许程序强制将当前应用程序转到后台运行 |
SET_PROCESS_LIMIT |
允许应用设置可以运行的最大数量应用进程 |
SET_TIME |
允许应用设置系统时间 |
SET_TIME_ZONE |
允许应用设置系统时区时间 |
SET_WALLPAPER |
允许应用设置壁纸 |
SET_WALLPAPER_HINTS |
允许应用设置锁定的壁纸 |
SIGNAL_PERSISTENT |
允许应用发出一个给所有稳定进程信号的请求 |
STATUS_BAR |
允许应用打开、关闭或者使状态栏或图标失去作用 |
SUBSCRIBED_FEEDS_READ |
允许应用访问内容提供者的签署认证 |
SUBSCRIBED_FEEDS_WRITE |
允许应用访问内容提供者的签署认证 |
SYSTEM_ALERT_WINDOW |
允许应用使用TYPE_SYSTEM_ALERT来打开窗口,并将窗口显示于其他应用的顶端 |
UPDATE_DEVICE_STATS |
允许应用更新设备资料信息 |
USE_CREDENTITALS |
允许应用从管理器得到授权请求 |
VIBRATE |
允许应用访问震动器 |
WAKE_LOCK |
允许使用电源锁定管理以使进程休眠或屏幕变暗 |
WRITE_APN_SETTINGS |
允许应用去写入接入点设置 |
WRITE_CALENDAR |
允许应用写(非读)用户的日历数据 |
WRITE_CONTACTS |
允许应用写(非读)用户的联系人数据 |
WRITE_EXTERNAL_STORAGE |
允许应用写(非读)用户的外部存储器 |
WRITE_GSERVICES |
允许应用修改Google服务地图 |
WRITE_HISTORY_BOOKMARKS |
允许应用写(非读)用户的浏览器历史和书签 |
WRITE_OWNER_DATA |
允许应用写(非读)用户的数据 |
WRITE_SECURE_SETTING |
允许应用写或读当前系统设置 |
WRITE_SETTINGS |
允许应用写或读系统设置 |
WRITE_SMS |
允许应用写短消息信息 |
WRITE_SYNC_SETTINGS |
允许应用写同步设置 |
示例:
1)电话短信权限:
<uses-permission android:name="android:permission.CALL_PHONE" />
<uses-permission android:name="android:permission.SEND_SMS" />
2)定位权限:
<uses-permission android:name="android:permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android:permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android:permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
3)蓝牙权限:
<uses-permission android:name="android:permission.BLUETOOTH" />
<uses-permission android:name="android:permission.BLUETOOTH_ADMIN" />
4)WIFI权限:
<uses-permission android:name="android:permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android:permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android:permission.CHANGE_WIFI_STATE" />
Manifest.permission_group类:
此类提供了应用程序权限组,通过应用程序权限组,则可以一次声明而使用相关的所有权限资源:
权限组 |
说明 |
ACCOUNTS |
直接通过统计管理器访问管理的统计 |
COST_MONEY |
可以用来让用户花钱但不需要通过与他们直接牵涉的权限 |
DEVELOPMENT_TOOLS |
与开发联盟特征相连的权限组 |
HARDWARE_CONTROLS |
用来提供直接访问硬件设备的权限 |
LOCATION |
用来允许访问用户的当前位置的权限 |
MESSAGES |
用来允许应用发送用户收到的被拦截的信息 |
NETWORK |
用来提供访问网络服务的权限 |
PERSONAL_INFO |
用来提供访问用户私人数据的权限,如联系人、日历、电子邮件等 |
PHONE_CALLS |
用于提供访问和修改拨号状态,如截取电话信息、读取和修改电话状态等的权限 |
STORAGE |
与SD卡访问相关联的权限组 |
SYSTEM_TOOLS |
与系统API有关联的权限组 |