安卓手机如何开始通讯录和位置信息权限?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓手机如何开始通讯录和位置信息权限?相关的知识,希望对你有一定的参考价值。
1.打开【安全中心】,进入【授权管理】;
2.选择【应用权限管理】;
3.选择【应用管理】;
4.在应用列表中找到【读取联系人】,点击进入;
6. 点击,在下方弹出来的选项中选择“允许”即可。
参考技术A 权限需要在androidManifest.xml 中定义相应权限获取网络
android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties"表在checkin数据库中,改值可以修改上传(
Allows read/write access to the "properties" table in the checkin database, to
change values that get uploaded)
android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows
an application to access coarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an
application to access fine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows
an application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an
application to create mock location providers for testing)
android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications
to access information about networks)
android.permission.ACCESS_SURFACE_FLINGER允许程序使用SurfaceFlinger底层特性(Allows an
application to use SurfaceFlinger's low level features)
android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allows applications
to access information about Wi-Fi networks)
android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务(Allows an application to
publish system-level services).
android.permission.BATTERY_STATS允许程序更新手机电池统计信息(Allows an application to
update the collected battery statistics)
android.permission.BLUETOOTH允许程序连接到已配对的蓝牙设备(Allows applications to connect
to paired bluetooth devices)
android.permission.BLUETOOTH_ADMIN允许程序发现和配对蓝牙设备(Allows applications to
discover and pair bluetooth devices)
android.permission.BRICK请求能够禁用设备(非常危险)(Required to be able to disable the
device (very dangerous!).)
android.permission.BROADCAST_PACKAGE_REMOVED允许程序广播一个提示消息在一个应用程序包已经移除后(Allows
an application to broadcast a notification that an application package has been
removed)
android.permission.BROADCAST_STICKY.允许一个程序广播常用intents(Allows an application
to broadcast sticky intents)
android.permission.CALL_PHONE允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an
application to initiate a phone call without going through the Dialer user
interface for the user to confirm the call being placed.)
android.permission.CALL_PRIVILEGED允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allows
an application to call any phone number, including emergency numbers, without
going through the Dialer user interface for the user to confirm the call being
placed)
android.permission.CAMERA请求访问使用照相设备(Required to be able to access the
camera device. )
android.permission.CHANGE_COMPONENT_ENABLED_STATE允许一个程序是否改变一个组件或其他的启用或禁用(Allows
an application to change whether an application component (other than its own)
is enabled or not. )
android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置,如本地化(Allows an
application to modify the current configuration, such as locale. )
android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态(Allows applications to
change network connectivity state)
android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态(Allows applications to
change Wi-Fi connectivity state)
android.permission.CLEAR_APP_CACHE允许一个程序清楚缓存从所有安装的程序在设备中(Allows an
application to clear the caches of all installed applications on the device.
)
android.permission.CLEAR_APP_USER_DATA允许一个程序清除用户设置(Allows an application to
clear user data)
android.permission.CONTROL_LOCATION_UPDATES允许启用禁止位置更新提示从无线模块(Allows
enabling/disabling location update notifications from the radio. )
android.permission.DELETE_CACHE_FILES允许程序删除缓存文件(Allows an application to
delete cache files)
android.permission.DELETE_PACKAGES允许一个程序删除包(Allows an application to delete
packages)
android.permission.DEVICE_POWER允许访问底层电源管理(Allows low-level access to power
management)
android.permission.DIAGNOSTIC允许程序RW诊断资源(Allows applications to RW to
diagnostic resources. )
android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁(Allows applications to disable
the keyguard )
android.permission.DUMP允许程序返回状态抓取信息从系统服务(Allows an application to retrieve
state dump information from system services.)
android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows
Mobile中的托盘程序(Allows an application to expand or collapse the status bar. )
android.permission.FACTORY_TEST作为一个工厂测试程序,运行在root用户(Run as a manufacturer
test application, running as the root user. )
android.permission.FLASHLIGHT访问闪光灯,Android开发网提示HTC Dream不包含闪光灯(Allows
access to the flashlight )
android.permission.FORCE_BACK允许程序强行一个后退操作是否在顶层activities(Allows an
application to force a BACK operation on whatever is the top activity. )
android.permission.FOTA_UPDATE暂时不了解这是做什么使用的,Android开发网分析可能是一个预留权限.
android.permission.GET_ACCOUNTS访问一个帐户列表在Accounts Service中(Allows access to
the list of accounts in the Accounts Service)
android.permission.GET_PACKAGE_SIZE允许一个程序获取任何package占用空间容量(Allows an
application to find out the space used by any package. )
android.permission.GET_TASKS允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows
an application to get information about the currently or recently running tasks:
a thumbnail representation of the tasks, what activities are running in it,
etc.)
android.permission.HARDWARE_TEST允许访问硬件(Allows access to hardware
peripherals. )
android.permission.INJECT_EVENTS允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,Android开发网提醒算是hook技术吧(Allows
an application to inject user events (keys, touch, trackball) into the event
stream and deliver them to ANY window.)
android.permission.INSTALL_PACKAGES允许一个程序安装packages(Allows an application
to install packages. )
android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面(Allows an
application to open windows that are for use by parts of the system user
interface. ) 参考技术B
1. 打开【安全中心】,进入【授权管理】。
2. 选择【应用权限管理】。
3. 选择【应用管理】。
4. 在应用列表中找到想要开通权限的应用,点击进入。
5. 在权限列表中找到【读取联系人】。
6. 点击【读取联系人】,在下方弹出来的选项中选择“允许”即可。
安卓——读取到手机通讯录中的好友的备注信息
安卓应用开发时,需要读取手机通讯录信息算是一个很常见的需求了。但是一般也就获取通讯录好友的名字和号码两个信息就行了,方法也很简单:
// 获取手机联系人部分数据信息
ContentResolver resolver = getContentResolver();
Cursor phoneCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]
ContactsContract.CommonDataKinds.Phone.CONTACT_ID, // id
ContactsContract.Contacts.DISPLAY_NAME, // 名字
ContactsContract.CommonDataKinds.Phone.NUMBER // 号码
, null, null, null);
if (phoneCursor != null)
while (phoneCursor.moveToNext())
// 获得联系人的ID
int idColumn = phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID);
String contactId = phoneCursor.getString(idColumn);
// 获得联系人姓名
int displayNameColumn = phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
String contactName = phoneCursor.getString(displayNameColumn);
// 获得联系人号码
int NumberColumn = phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String contactNumber = phoneCursor.getString(displayNameColumn);
// 打印或者其他操作
如上便是使用系统提供的方法,查询手机通讯录内的好友的名字和号码,然后可以做打印显示或者其他自定义操作。
一个联系人可能有多个号码,有时候需求是要显示所有号码,有时候则只显示某一个。这些就都属于根据需求再做一些新的处理了。另外通讯录里面也有很多数据表,有很多数据,但是都不太常用,百度也一大堆教程,不赘述。这里只记录我遇到的一个奇葩需求。
有个项目,需求是要获取通讯录好友的名字、号码、备注三个字段。需要拿备注这个字段的需求绝对算是奇葩,反正我直接百度搜索怎么获取到手机通讯录好友的备注信息,没有得到直观的直接的方法,应该很少人会遇到需要做这个吧…….
网上一通查询没有得到想要的答案,就自己使用模拟器,添加了一个好友,名字为“123”,号码为“13012341234”,备注为“123456123456”。然后拿出来了contacts2.db,这个就是通讯录的数据库了。有过经验的人都知道,这里面主要是看四个表,其中有一个名字叫“data”的表,没错,大部分数据都是存储在这个表,该表下数据如下:
在这里我们看到刚才新增通讯录的三个字段数据都在!然后它们的共同点是“raw_contact_id”都是1,这个就是联系人id了,代表这是同一个人的数据信息。不相同的一个重要字段是“mimetype_id”,这里“mimetype_id”为11的就是保存了备注信息,然后赶紧写代码查询data表下面的“mimetype_id”为11的data1的值,然后在真机上运行测试,发现没有找到数据,查看发现真机上备注字段的“mimetype_id”并不是11。
了解数据库,尤其是自己设计过数据库表的人应该都知道,良好的数据库都是使用表关联的,这里肯定也不会是写死11就是代表什么。在contacts2.db数据库中能找到表mimetypes。
根据上图的类型表我们能看到类型的一一对应,id为11名字为“vnd.android.cursor.item/note”的类型就是保存备注字段的了。id可能每个手机上都不一样,那么这个名字应该都是统一的了吧,在系统类“ContactsContract”中我们搜索到了该字符串“vnd.android.cursor.item/note”。
更惊喜的是,我们发现这个Note类下面就两个属性,下面的NOTE常量指向的就是“data1”的取值。这样一来我们就知道如何写代码来查询到备注信息咯。
Cursor phoneCursor3 = getContentResolver().query(
ContactsContract.Data.CONTENT_URI, null,
"raw_contact_id=? and " + ContactsContract.Data.MIMETYPE + "=?",
new String[]contactId, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE, null);
if (phoneCursor3.moveToFirst())
String contactRemark = phoneCursor3.getString( phoneCursor3.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
如上代码,就能根据通讯录好友的id查询到它的备注栏信息了。
时间有限,仅简单记录下,如果需要查询获取到其他信息,方法应该都大同小异。最后不得不说一句,系统底层源码及设计思想等,确实很值得我们开发者好好研究和学习。
以上是关于安卓手机如何开始通讯录和位置信息权限?的主要内容,如果未能解决你的问题,请参考以下文章