SharedPreferences 是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。这样你应该就能明显地感觉到,使用SharedPreferences 来进行数据持久化要比使用文件方便很多,下面我们就来看一下它的具体用法吧。
将数据存储到SharedPreferences 中
要想使用SharedPreferences来存储数据,首先需要获取到SharedPreferences对象。Android中主要提供了三种方法用于得到SharedPreferences 对象。
1. Context 类中的getSharedPreferences()方法
此方法接收两个参数,第一个参数用于指定SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data/<packagename>/shared_prefs/目录下的。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE 和MODE_MULTI_PROCESS。MODE_PRIVATE 仍然是默认的操作模式, 和直接传入0 效果是相同的, 表示只有当前的应用程序才可以对这个SharedPreferences 文件进行读写。MODE_MULTI_PROCESS 则一般是用于会有多个进程中对同一个SharedPreferences 文件进行读写的情况。类似地,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE 这两种模式已在Android 4.2 版本中被废弃。
2. Activity 类中的getPreferences()方法
这个方法和Context 中的getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为SharedPreferences 的文件名。
3. PreferenceManager 类中的getDefaultSharedPreferences()方法这是一个静态方法,它接收一个Context 参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences 文件。得到了SharedPreferences 对象之后,就可以开始向SharedPreferences 文件中存储数据了,
主要可以分为三步实现。
1. 调用SharedPreferences 对象的edit()方法来获取一个SharedPreferences.Editor 对象。
2. 向SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用
putBoolean 方法,添加一个字符串则使用putString()方法,以此类推。
3. 调用commit()方法将添加的数据提交,从而完成数据存储操作。
示例代码:
<span style="font-size:18px;"> SharedPreferences.Editor editor = getSharedPreferences("NetworkPara", MODE_PRIVATE).edit();
editor.putBoolean("flagSend", flagSend);
editor.commit();</span>
从SharedPreferences 中读取数据
你应该已经感觉到了,使用SharedPreferences 来存储数据是非常简单的,不过下面还有更好的消息,其实从SharedPreferences 文件中读取数据更加的简单。SharedPreferences 对象中提供了一系列的get方法用于对存储的数据进行读取,每种get方法都对应了SharedPreferences.Editor 中的一种put 方法,比如读取一个布尔型数据就使用getBoolean()方法,读取一个字符串就使用getString()方法。这些get 方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到对应的值时,会以什么样的默认值进行返回。
示例代码:
SharedPreferences pref = getSharedPreferences("NetworkPara", MODE_PRIVATE);
flagSend= pref.getBoolean("flagSend", true);
所有之前存储的数据都成功读取出来了!通过这个例子,我们就把SharedPreferences 存储的知识也学习完了。相比之下,SharedPreferences 存储确实要比文本存储简单方便了许多,应用场景也多了不少,比如很多应用程序中的偏好设置功能其实都使用到了SharedPreferences技术。
活动被回收了怎么办
前面我们已经说过,当一个活动进入到了停止状态,是有可能被系统回收的。那么想象以下场景,应用中有一个活动A,用户在活动A 的基础上启动了活动B,活动A 就进入了停止状态,这个时候由于系统内存不足,将活动A 回收掉了,然后用户按下Back 键返回活动A,会出现什么情况呢?其实还是会正常显示活动A 的,只不过这时并不会执行onRestart()方法,而是会执行活动A 的onCreate()方法,因为活动A 在这种情况下会被重新创建一次。这样看上去好像一切正常,可是别忽略了一个重要问题,活动A 中是可能存在临时数据和状态的。打个比方,MainActivity 中有一个文本输入框,现在你输入了一段文字,然后启动NormalActivity,这时MainActivity 由于系统内存不足被回收掉,过了一会你又点击了Back 键回到MainActivity,你会发现刚刚输入的文字全部都没了,因为MainActivity 被重新创建了。
如果我们的应用出现了这种情况,是会严重影响用户体验的,所以必须要想想办法解决这个问题。查阅文档可以看出,Activity 中还提供了一个onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。onSaveInstanceState()方法会携带一个Bundle 类型的参数,Bundle 提供了一系列的方法用于保存数据,比如可以使用putString()方法保存字符串,使用putInt()方法保存整型数据,以此类推。每个保存方法需要传入两个参数,第一个参数是键,用于后面从Bundle 中取值,第二个参数是真正要保存的内容。
示例代码:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("flagSend",flagSend);
Log.d(TAG, "outState.putBoolean(\"flagSend\",flagSend)" + flagSend);
}
数据是已经保存下来了,那么我们应该在哪里进行恢复呢?细心的你也许早就发现,我们一直使用的onCreate()方法其实也有一个Bundle 类型的参数。这个参数在一般情况下都是null,但是当活动被系统回收之前有通过onSaveInstanceState()方法来保存数据的话,这个参数就会带有之前所保存的全部数据,我们只需要再通过相应的取值方法将数据取出即可。修改MainActivity 的onCreate()方法,如下所示:
示例代码:
if(savedInstanceState != null){
flagSend = savedInstanceState.getBoolean("flagSend");
Log.d(TAG, "savedInstanceState.getBoolean(\"flagSend\")" + flagSend);
if(flagSend){
isShowSend_iv_networkpara.setBackgroundResource(R.drawable.ucar_check);
}else {
isShowSend_iv_networkpara.setBackgroundResource(R.drawable.ucar_uncheck);
}
}
Android模拟器Genymotion添加ARM程序运行环境的方法
搞开发也很多年了,还是第一次写blog,给自己留一些记录吧
自从用了Genymotion这个号称快到极致的Android模拟器以后,很多时候调试程序都不想用真机了,SDK带效率低下的官方模拟器因为效率太低也放弃了(据说可以通过配置来改进一直没去尝试过)
通过模拟器和hierarchyviewer可以很方便查看很多程序的界面布局,用于学习非常不错,不过也一直有个问题,就是很多ARM的程序都没法安装(比如微信),毕竟是用的vbox虚拟机,相当于在x86环境下运行的,限定ARM的程序自然是无法安装了,会提示”INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”这个错误,无法向模拟器部署,如果直接安装APK则会提示与您的设备不兼容。
那么是不是就没有办法了呢?通过查找资料,发现了解决的方法,相信很多人也早就知道了,参考xda的这篇文章:
http://forum.xda-developers.com/showthread.php?t=2528952
使用方法也很简单,就是将zip文件直接拖放到Genymotion的player窗口中即可自动安装(安装后要重启一次)。
不过在实际操作的过程中,发现在部分模拟器环境下,将zip文件拖进去以后会报错,提示”an error occurred while deploying a file”。经过实验,用DDMS也没法手动安装zip包里的东西(要复制到system下)。个人认为原因可能在于设备没有在root的状态下,但是Genymotion应该是已经root了的啊,最后解决方法是通过re管理器之类的文件管理工具,先获得root的读写权限,然后将文件手动复制过去替换就行了(记得要重启)。其实这方法也是xda的帖子里面提到的。应该还有更简单的方法,其实就是将zip包中的system/lib下的文件都复制到设备就行了。
这么操作以后,就可以安装各种ARM的程序了,微信也正常安装,经测试使用也没有什么问题。
没试过Genymotion的朋友推荐试试这个模拟器,很多时候,比真机要更快捷方便,性能也很棒
安兔兔测试,不能跑3D测试部分,不过分数还是不错的…
Android应用权限
Android应用需要在AndroidManifest.xml添加某些权限。才能调用系统功能。如应用提供震动功能。必须在配置文件中加入震动权限。
属性 | 说明 |
android.permission.ACCESS_CHECKIN_PROPERTIES | 允许读写访问 “properties”表在checkin数据库中,改值可以修改上传 |
android.permission.ACCESS_COARSE_LOCATION | 通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 |
android.permission.ACCESS_FINE_LOCATION | 通过GPS芯片接收卫星的定位信息,定位精度达10米以内 |
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS | 允许应用程序访问额外的位置提供命令 |
android.permission.ACCESS_MOCK_LOCATION | 获取模拟定位信息,一般用于帮助开发者调试应用 |
android.permission.ACCESS_NETWORK_STATE | 获取网络信息状态,如当前的网络连接是否有效 |
android.permission.ACCESS_SURFACE_FLINGER | Android平台上底层的图形显示支持,一般用于游戏或照相机预览界面和底层模式的屏幕截图 |
android.permission.ACCESS_WIFI_STATE | 允许程序访问Wi-Fi网络状态信息 |
android.permission.ACCOUNT_MANAGER | 获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限 |
android.permission.AUTHENTICATE_ACCOUNTS | 允许一个程序通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息 |
android.permission.ADD_SYSTEM_SERVICE | 允许程序发布系统级服务 |
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 | 必须通过RemoteViewsService服务来请求,只有系统才能用 |
android.permission.BIND_WALLPAPER | 必须通过WallpaperService服务来请求,只有系统才能用 |
android.permission.BLUETOOTH | 允许程序连接到已配对的蓝牙设备 |
android.permission.BLUETOOTH_ADMIN | 允许程序发现和配对蓝牙设备 |
android.permission.BRICK | 能够禁用手机,非常危险,顾名思义就是让手机变成砖头 |
android.permission.BROADCAST_PACKAGE_REMOVED | 允许程序广播一个提示消息在一个应用程序包已经移除后 |
android.permission.BROADCAST_STICKY | 允许一个程序广播常用intents |
android.permission.CALL_PHONE | 允许一个程序初始化一个电话拨号不需通过拨号 用户界面需要用户确认 |
android.permission.CALL_PRIVILEGED | 允许一个程序拨打任何号码,包含紧 急号码无需通过拨号用户界面需要用户确认 |
android.permission.CAMERA | 请求访问使用照相设备 |
android.permission.CHANGE_COMPONENT_ENABLED_STATE | 改变组件是否启用状态 |
android.permission.CHANGE_CONFIGURATION | 允许一个程序修改当前设置,如本地化 |
android.permission.CHANGE_NETWORK_STATE | 改变网络状态如是否能联网 |
android.permission.CHANGE_WIFI_MULTICAST_STATE | 改变WiFi多播状态 |
android.permission.CHANGE_WIFI_STATE | 允许程序改变Wi-Fi连接状态 |
android.permission.CLEAR_APP_CACHE | 清除应用缓存 |
android.permission.CLEAR_APP_USER_DATA | 清除应用的用户数据 |
android.permission.CWJ_GROUP | 允许CWJ账户组访问底层信息 |
android.permission.CELL_PHONE_MASTER_EX | 手机优化大师扩展权限 |
android.permission.CONTROL_LOCATION_UPDATES | 允许获得移动网络定位信息改变 |
android.permission.DELETE_CACHE_FILES | 允许程序删除缓存文件 |
android.permission.DELETE_PACKAGES | 允许程序删除应用 |
android.permission.DEVICE_POWER | 允许访问底层电源管理 |
android.permission.DIAGNOSTIC | 允许程序RW诊断资源 |
android.permission.DISABLE_KEYGUARD | 允许程序禁用键盘锁 |
android.permission.DUMP | 允许程序返回状态抓取信息从系统服务 |
android.permission.EXPAND_STATUS_BAR | 允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序 |
android.permission.FACTORY_TEST | 作为一个工厂测试程序,运行在root用户 |
android.permission.FLASHLIGHT | 访问闪光灯,Android开发网提示HTC Dream不包含闪光灯 |
android.permission.FORCE_BACK | 允许程序强行一个后退操作是否在顶层activities |
android.permission.FOTA_UPDATE | 暂时不了解这是做什么使用的,Android开发网分析可能是一个预留权限. |
android.permission.GET_ACCOUNTS | 访问GMail账户列表 |
android.permission.GET_PACKAGE_SIZE | 允许一个程序获取任何package占用空间容量 |
android.permission.GET_TASKS | 允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等 |
android.permission.GLOBAL_SEARCH | 允许程序使用全局搜索功能 |
android.permission.HARDWARE_TEST | 访问硬件辅助设备,用于硬件测试 |
android.permission.INJECT_EVENTS | 允许一个程序截获用户事件如按键、触 摸、轨迹球等等到一个时间流 |
android.permission.INSTALL_LOCATION_PROVIDER | 安装定位提供 |
android.permission.INSTALL_PACKAGES | 允许程序安装应用 |
android.permission.INTERNAL_SYSTEM_WINDOW | 允许程序打开内部窗口,不对第三方应用程序开放此权限 |
android.permission.INTERNET | 访问网络连接,可能产生GPRS流量 |
android.permission.KILL_BACKGROUND_PROCESSES | 允许程序调用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_SETTINGS | 修改声音设置信息 |
android.permission.MODIFY_PHONE_STATE | 修改电话状态,如飞行模式,但不包含替换系统拨号器界面 |
android.permission.MOUNT_FORMAT_FILESYSTEMS | 格式化可移动文件系统,比如格式化清空SD卡 |
android.permission.MOUNT_UNMOUNT_FILESYSTEMS | 挂载、反挂载外部文件系统 |
android.permission.NFC | 允许程序执行NFC近距离通讯操作,用于移动支持 |
android.permission.PERSISTENT_ACTIVITY | 创建一个永久的Activity,该功能标记为将来将被移除 |
android.permission.PROCESS_OUTGOING_CALLS | 允许程序监视,修改或放弃播出电话 |
android.permission.READ_CALENDAR | 允许程序读取用户的日程信息 |
android.permission.READ_CONTACTS | 允许应用访问联系人通讯录信息 |
android.permission.READ_FRAME_BUFFER | 读取帧缓存用于屏幕截图 |
com.android.browser.permission.READ_HISTORY_BOOKMARKS | 读取浏览器收藏夹和历史记录 |
android.permission.READ_INPUT_STATE | 读取当前键的输入状态,仅用于系统 |
android.permission.READ_LOGS | 允许程序读取底层系统日志文件 |
android.permission.READ_PHONE_STATE | 访问电话状态 |
android.permission.READ_OWNER_DATA | 允许程序读取所有者数据 |
android.permission.READ_SMS | 允许程序读取短信息 |
android.permission.READ_SYNC_SETTINGS | 读取同步设置,读取Google在线同步设置 |
android.permission.READ_SYNC_STATS | 读取同步状态,获得Google在线同步状态 |
android.permission.REBOOT | 允许程序重新启动设备 |
android.permission.RECEIVE_BOOT_COMPLETED | 允许程序开机自动运行 |
android.permission.RECEIVE_MMS | 接收彩信 |
android.permission.RECEIVE_SMS | 接收短信 |
android.permission.RECEIVE_WAP_PUSH | 接收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_WATCHER | 设置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_APPLICATIONS | 设置应用的参数,已不再工作具体查看addPackageToPreferred(String) 介绍 |
android.permission.SET_PROCESS_FOREGROUND | 允许程序当前运行程序强行到前台 |
android.permission.SET_PROCESS_LIMIT | 允许程序设置最大的进程数量的限制 |
android.permission.SET_TIME | 设置系统时间 |
android.permission.SET_TIME_ZONE | 设置系统时区 |
android.permission.SET_WALLPAPER | 允许程序设置壁纸 |
android.permission.SET_WALLPAPER_HINTS | 允许程序设置壁纸hits |
android.permission.SIGNAL_PERSISTENT_PROCESSES | 允许程序请求发送信号到所有显示的进程中 |
android.permission.STATUS_BAR | 允许程序打开、关闭或禁用状态栏及图标 |
android.permission.SUBSCRIBED_FEEDS_READ | 允许一个程序访问订阅RSS Feed内容提供 |
android.permission.SUBSCRIBED_FEEDS_WRITE | 写入或修改订阅内容的数据库 |
android.permission.SYSTEM_ALERT_WINDOW | 显示系统窗口 |
android.permission.UPDATE_DEVICE_STATS | 更新设备状态 |
android.permission.USE_CREDENTIALS | 允许程序请求验证从AccountManager |
android.permission.USE_SIP | 允许程序使用SIP视频服务 |
android.permission.VIBRATE | 允许振动 |
android.permission.WAKE_LOCK | 允许程序在手机屏幕关闭后后台进程仍然运行 |
android.permission.WRITE_APN_SETTINGS | 写入网络GPRS接入点设置 |
android.permission.WRITE_CALENDAR | 写入日程,但不可读取 |
android.permission.WRITE_CONTACTS | 写入联系人,但不可读取 |
android.permission.WRITE_EXTERNAL_STORAGE | 允许程序写入外部存储,如SD卡上写文件 |
android.permission.WRITE_GSERVICES | 允许程序写入Google Map服务数据 |
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS | 写入浏览器历史记录或收藏夹,但不可读取 |
android.permission.WRITE_SECURE_SETTINGS | 允许程序读写系统安全敏感的设置项 |
android.permission.WRITE_OWNER_DATA | 允许一个程序写入但不读取所有者数据 |
android.permission.WRITE_SETTINGS | 允许程序读取或写入系统设置 |
android.permission.WRITE_SMS | 允许程序写短信 |
android.permission.WRITE_SYNC_SETTINGS | 允许程序写入同步设置 |
Android模拟器Genymotion添加ARM程序运行环境的方法
搞开发也很多年了,还是第一次写blog,给自己留一些记录吧
自从用了Genymotion这个号称快到极致的Android模拟器以后,很多时候调试程序都不想用真机了,SDK带效率低下的官方模拟器因为效率太低也放弃了(据说可以通过配置来改进一直没去尝试过)
通过模拟器和hierarchyviewer可以很方便查看很多程序的界面布局,用于学习非常不错,不过也一直有个问题,就是很多ARM的程序都没法安装(比如微信),毕竟是用的vbox虚拟机,相当于在x86环境下运行的,限定ARM的程序自然是无法安装了,会提示”INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”这个错误,无法向模拟器部署,如果直接安装APK则会提示与您的设备不兼容。
那么是不是就没有办法了呢?通过查找资料,发现了解决的方法,相信很多人也早就知道了,参考xda的这篇文章:
http://forum.xda-developers.com/showthread.php?t=2528952
使用方法也很简单,就是将zip文件直接拖放到Genymotion的player窗口中即可自动安装(安装后要重启一次)。
不过在实际操作的过程中,发现在部分模拟器环境下,将zip文件拖进去以后会报错,提示”an error occurred while deploying a file”。经过实验,用DDMS也没法手动安装zip包里的东西(要复制到system下)。个人认为原因可能在于设备没有在root的状态下,但是Genymotion应该是已经root了的啊,最后解决方法是通过re管理器之类的文件管理工具,先获得root的读写权限,然后将文件手动复制过去替换就行了(记得要重启)。其实这方法也是xda的帖子里面提到的。应该还有更简单的方法,其实就是将zip包中的system/lib下的文件都复制到设备就行了。
这么操作以后,就可以安装各种ARM的程序了,微信也正常安装,经测试使用也没有什么问题。
没试过Genymotion的朋友推荐试试这个模拟器,很多时候,比真机要更快捷方便,性能也很棒
安兔兔测试,不能跑3D测试部分,不过分数还是不错的…
Android应用权限
Android应用需要在AndroidManifest.xml添加某些权限。才能调用系统功能。如应用提供震动功能。必须在配置文件中加入震动权限。
属性 | 说明 |
android.permission.ACCESS_CHECKIN_PROPERTIES | 允许读写访问 “properties”表在checkin数据库中,改值可以修改上传 |
android.permission.ACCESS_COARSE_LOCATION | 通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 |
android.permission.ACCESS_FINE_LOCATION | 通过GPS芯片接收卫星的定位信息,定位精度达10米以内 |
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS | 允许应用程序访问额外的位置提供命令 |
android.permission.ACCESS_MOCK_LOCATION | 获取模拟定位信息,一般用于帮助开发者调试应用 |
android.permission.ACCESS_NETWORK_STATE | 获取网络信息状态,如当前的网络连接是否有效 |
android.permission.ACCESS_SURFACE_FLINGER | Android平台上底层的图形显示支持,一般用于游戏或照相机预览界面和底层模式的屏幕截图 |
android.permission.ACCESS_WIFI_STATE | 允许程序访问Wi-Fi网络状态信息 |
android.permission.ACCOUNT_MANAGER | 获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限 |
android.permission.AUTHENTICATE_ACCOUNTS | 允许一个程序通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息 |
android.permission.ADD_SYSTEM_SERVICE | 允许程序发布系统级服务 |
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 | 必须通过RemoteViewsService服务来请求,只有系统才能用 |
android.permission.BIND_WALLPAPER | 必须通过WallpaperService服务来请求,只有系统才能用 |
android.permission.BLUETOOTH | 允许程序连接到已配对的蓝牙设备 |
android.permission.BLUETOOTH_ADMIN | 允许程序发现和配对蓝牙设备 |
android.permission.BRICK | 能够禁用手机,非常危险,顾名思义就是让手机变成砖头 |
android.permission.BROADCAST_PACKAGE_REMOVED | 允许程序广播一个提示消息在一个应用程序包已经移除后 |
android.permission.BROADCAST_STICKY | 允许一个程序广播常用intents |
android.permission.CALL_PHONE | 允许一个程序初始化一个电话拨号不需通过拨号 用户界面需要用户确认 |
android.permission.CALL_PRIVILEGED | 允许一个程序拨打任何号码,包含紧 急号码无需通过拨号用户界面需要用户确认 |
android.permission.CAMERA | 请求访问使用照相设备 |
android.permission.CHANGE_COMPONENT_ENABLED_STATE | 改变组件是否启用状态 |
android.permission.CHANGE_CONFIGURATION | 允许一个程序修改当前设置,如本地化 |
android.permission.CHANGE_NETWORK_STATE | 改变网络状态如是否能联网 |
android.permission.CHANGE_WIFI_MULTICAST_STATE | 改变WiFi多播状态 |
android.permission.CHANGE_WIFI_STATE | 允许程序改变Wi-Fi连接状态 |
android.permission.CLEAR_APP_CACHE | 清除应用缓存 |
android.permission.CLEAR_APP_USER_DATA | 清除应用的用户数据 |
android.permission.CWJ_GROUP | 允许CWJ账户组访问底层信息 |
android.permission.CELL_PHONE_MASTER_EX | 手机优化大师扩展权限 |
android.permission.CONTROL_LOCATION_UPDATES | 允许获得移动网络定位信息改变 |
android.permission.DELETE_CACHE_FILES | 允许程序删除缓存文件 |
android.permission.DELETE_PACKAGES | 允许程序删除应用 |
android.permission.DEVICE_POWER | 允许访问底层电源管理 |
android.permission.DIAGNOSTIC | 允许程序RW诊断资源 |
android.permission.DISABLE_KEYGUARD | 允许程序禁用键盘锁 |
android.permission.DUMP | 允许程序返回状态抓取信息从系统服务 |
android.permission.EXPAND_STATUS_BAR | 允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序 |
android.permission.FACTORY_TEST | 作为一个工厂测试程序,运行在root用户 |
android.permission.FLASHLIGHT | 访问闪光灯,Android开发网提示HTC Dream不包含闪光灯 |
android.permission.FORCE_BACK | 允许程序强行一个后退操作是否在顶层activities |
android.permission.FOTA_UPDATE | 暂时不了解这是做什么使用的,Android开发网分析可能是一个预留权限. |
android.permission.GET_ACCOUNTS | 访问GMail账户列表 |
android.permission.GET_PACKAGE_SIZE | 允许一个程序获取任何package占用空间容量 |
android.permission.GET_TASKS | 允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等 |
android.permission.GLOBAL_SEARCH | 允许程序使用全局搜索功能 |
android.permission.HARDWARE_TEST | 访问硬件辅助设备,用于硬件测试 |
android.permission.INJECT_EVENTS | 允许一个程序截获用户事件如按键、触 摸、轨迹球等等到一个时间流 |
android.permission.INSTALL_LOCATION_PROVIDER | 安装定位提供 |
android.permission.INSTALL_PACKAGES | 允许程序安装应用 |
android.permission.INTERNAL_SYSTEM_WINDOW | 允许程序打开内部窗口,不对第三方应用程序开放此权限 |
android.permission.INTERNET | 访问网络连接,可能产生GPRS流量 |
android.permission.KILL_BACKGROUND_PROCESSES | 允许程序调用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_SETTINGS | 修改声音设置信息 |
android.permission.MODIFY_PHONE_STATE | 修改电话状态,如飞行模式,但不包含替换系统拨号器界面 |
android.permission.MOUNT_FORMAT_FILESYSTEMS | 格式化可移动文件系统,比如格式化清空SD卡 |
android.permission.MOUNT_UNMOUNT_FILESYSTEMS | 挂载、反挂载外部文件系统 |
android.permission.NFC | 允许程序执行NFC近距离通讯操作,用于移动支持 |
android.permission.PERSISTENT_ACTIVITY | 创建一个永久的Activity,该功能标记为将来将被移除 |
android.permission.PROCESS_OUTGOING_CALLS | 允许程序监视,修改或放弃播出电话 |
android.permission.READ_CALENDAR | 允许程序读取用户的日程信息 |
android.permission.READ_CONTACTS | 允许应用访问联系人通讯录信息 |
android.permission.READ_FRAME_BUFFER | 读取帧缓存用于屏幕截图 |
com.android.browser.permission.READ_HISTORY_BOOKMARKS | 读取浏览器收藏夹和历史记录 |
android.permission.READ_INPUT_STATE | 读取当前键的输入状态,仅用于系统 |
android.permission.READ_LOGS | 允许程序读取底层系统日志文件 |
android.permission.READ_PHONE_STATE | 访问电话状态 |
android.permission.READ_OWNER_DATA | 允许程序读取所有者数据 |
android.permission.READ_SMS | 允许程序读取短信息 |
android.permission.READ_SYNC_SETTINGS | 读取同步设置,读取Google在线同步设置 |
android.permission.READ_SYNC_STATS | 读取同步状态,获得Google在线同步状态 |
android.permission.REBOOT | 允许程序重新启动设备 |
android.permission.RECEIVE_BOOT_COMPLETED | 允许程序开机自动运行 |
android.permission.RECEIVE_MMS | 接收彩信 |
android.permission.RECEIVE_SMS | 接收短信 |
android.permission.RECEIVE_WAP_PUSH | 接收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_WATCHER | 设置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_APPLICATIONS | 设置应用的参数,已不再工作具体查看addPackageToPreferred(String) 介绍 |
android.permission.SET_PROCESS_FOREGROUND | 允许程序当前运行程序强行到前台 |
android.permission.SET_PROCESS_LIMIT | 允许程序设置最大的进程数量的限制 |
android.permission.SET_TIME | 设置系统时间 |
android.permission.SET_TIME_ZONE | 设置系统时区 |
android.permission.SET_WALLPAPER | 允许程序设置壁纸 |
android.permission.SET_WALLPAPER_HINTS | 允许程序设置壁纸hits |
android.permission.SIGNAL_PERSISTENT_PROCESSES | 允许程序请求发送信号到所有显示的进程中 |
android.permission.STATUS_BAR | 允许程序打开、关闭或禁用状态栏及图标 |
android.permission.SUBSCRIBED_FEEDS_READ | 允许一个程序访问订阅RSS Feed内容提供 |
android.permission.SUBSCRIBED_FEEDS_WRITE | 写入或修改订阅内容的数据库 |
android.permission.SYSTEM_ALERT_WINDOW | 显示系统窗口 |
android.permission.UPDATE_DEVICE_STATS | 更新设备状态 |
android.permission.USE_CREDENTIALS | 允许程序请求验证从AccountManager |
android.permission.USE_SIP | 允许程序使用SIP视频服务 |
android.permission.VIBRATE | 允许振动 |
android.permission.WAKE_LOCK | 允许程序在手机屏幕关闭后后台进程仍然运行 |
android.permission.WRITE_APN_SETTINGS | 写入网络GPRS接入点设置 |
android.permission.WRITE_CALENDAR | 写入日程,但不可读取 |
android.permission.WRITE_CONTACTS | 写入联系人,但不可读取 |
android.permission.WRITE_EXTERNAL_STORAGE | 允许程序写入外部存储,如SD卡上写文件 |
android.permission.WRITE_GSERVICES | 允许程序写入Google Map服务数据 |
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS | 写入浏览器历史记录或收藏夹,但不可读取 |
android.permission.WRITE_SECURE_SETTINGS | 允许程序读写系统安全敏感的设置项 |
android.permission.WRITE_OWNER_DATA | 允许一个程序写入但不读取所有者数据 |
android.permission.WRITE_SETTINGS | 允许程序读取或写入系统设置 |
android.permission.WRITE_SMS | 允许程序写短信 |
android.permission.WRITE_SYNC_SETTINGS | 允许程序写入同步设置 |