100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java获取手机通讯录权限_Android读取手机通讯录联系人到自己项目

java获取手机通讯录权限_Android读取手机通讯录联系人到自己项目

时间:2022-01-31 07:51:24

相关推荐

java获取手机通讯录权限_Android读取手机通讯录联系人到自己项目

本文实例为大家分享了Android读取手机通讯录联系人到项目的具体代码,供大家参考,具体内容如下

一、主界面代码如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/contacts_view"

android:layout_width="match_parent"

android:layout_height="match_parent">

简单的添加了一个listview来展示待会读取到的通讯录数据。

二、MainAcitivity代码如下,代码中有详细注释!

public class MainActivity extends AppCompatActivity {

ArrayAdapter adapter;

List contactsList=new ArrayList<>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//获取到listview并且设置适配器

ListView contactsView= (ListView) findViewById(R.id.contacts_view);

adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,contactsList);

contactsView.setAdapter(adapter);

//判断是否开启读取通讯录的权限

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)!= PackageManager

.PERMISSION_GRANTED){

ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},1);

}else {

readContacts();

}

}

private void readContacts() {

Cursor cursor=null;

try {

//查询联系人数据,使用了getContentResolver().query方法来查询系统的联系人的数据

//CONTENT_URI就是一个封装好的Uri,是已经解析过得常量

cursor=getContentResolver().query(

monDataKinds.Phone.CONTENT_URI,

null,

null,

null,

null

);

//对cursor进行遍历,取出姓名和电话号码

if (cursor!=null){

while (cursor.moveToNext()){

//获取联系人姓名

String displayName=cursor.getString(cursor.getColumnIndex(

monDataKinds.Phone.DISPLAY_NAME

));

//获取联系人手机号

String number=cursor.getString(cursor.getColumnIndex(

monDataKinds.Phone.NUMBER

));

//把取出的两类数据进行拼接,中间加换行符,然后添加到listview中

contactsList.add(displayName+"\n"+number);

}

//刷新listview

adapter.notifyDataSetChanged();

}

}catch (Exception e){

e.printStackTrace();

}finally {

//记得关掉cursor

if (cursor!=null){

cursor.close();

}

}

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

switch (requestCode){

case 1:

if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){

readContacts();

}else {

Toast.makeText(this,"没有权限",Toast.LENGTH_SHORT).show();

}

break;

default:

break;

}

}

}

三、由于读取通讯录属于危险权限,所以记得在Manifest中开启权限

好了,下面运行一下,就可以读取出你手机里面的通讯录数据了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。