前言
最近开发中有读取手机通讯录的需求,傻的很认真的我,以为可以打开通讯录就代表不用再次动态申请权限,还是太天真,顾记录这次傻的很天真的日常,为了我的日常小鱼干,速记一下。
一.获取通讯录需要权限
1.android SDK>=23[6.0.0]的时候,需要权限,只需要加入即可
<uses-permission android:name="android.permission.READ_CONTACTS"/>
2.android SDK<23【6.0.0】的时候,需要动态申请权限
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
3.权限扩展[防止以后写新功能]
group:android.permission-group.CONTACTS(联系人组)
android.permission.WRITE_CONTACTS(写入联系人)
android.permission.GET_ACCOUNTS(查找设备上的帐户)
android.permission.READ_CONTACTS(读取联系人)
android.permission.READ_CALL_LOG(读取通话记录)
android.permission.READ_PHONE_STATE(读取电话状态)
android.permission.CALL_PHONE(拨打电话)
android.permission.WRITE_CALL_LOG(修改通话记录)
android.permission.USE_SIP(SIP视频服务)
android.permission.PROCESS_OUTGOING_CALLS(程序监视,修改或放弃拨出电话)
com.android.voicemail.permission.ADD_VOICEMAIL(允许应用程序添加系统中的语音邮件)group:android.permission-group.SMS(短信)
android.permission.READ_SMS(读取短信)
android.permission.RECEIVE_WAP_PUSH(接收WAP PUSH信息)
android.permission.RECEIVE_MMS()
android.permission.RECEIVE_SMS(接收短信权限)
android.permission.SEND_SMS(发送短信)
android.permission.READ_CELL_BROADCASTS(获取小区广播)
二.代码实现打开通讯录
因为本人项目是html与原生对接,顾
在通用html对接类中写入
/*
* 打开通讯录
* @param function
*/
@JavascriptInterface
public void openTelePhoneList(String function){
Logs.e(TAG,”openTelePhoneList——>”);
if(activity instanceof WebViewActivity) {
((WebViewActivity) activity).openTelePhoneList(function);
}
}
在WebViewActivity中写入打开通讯录代码
/*
* 打开通讯录
* @param function
*/
public void openTelePhoneList(String function){
if(!isFastDoubleClick()) {
if(!StringUtlis.isEmpty(function)) {
this.telePhoneBack=function;