zoukankan      html  css  js  c++  java
  • 安卓获取系统联系人

    第一步:如果你用的是模拟器,则先在通讯录添加两三个联系人,分别填入他们的姓名和名字。

    第二步:创建一个新项目。修改activity_main.xml文件,添加了一个listview来展示待会读取到的通讯录数据。

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="vertical"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent">
     6     <ListView
     7         android:id="@+id/contacts_view"
     8         android:layout_width="match_parent"
     9         android:layout_height="match_parent">
    10 
    11     </ListView>
    12 </LinearLayout>

    第三步,修改MainActivity.java文件

     1 package com.example.contactstest;
     2 
     3 public class MainActivity extends AppCompatActivity {
     4     ArrayAdapter<String> adapter;
     5     List<String> contactsList=new ArrayList<>();
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_main);
    10         //获取到listview并且设置适配器
    11         ListView contactsView=(ListView)findViewById(R.id.contacts_view);
    12         adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactsList);
    13         contactsView.setAdapter(adapter);
    14         //如果没有授权,就会弹出申请授权的弹窗供用户选择,不论结果如何,都会回调onRequestPermissionsResult()方法
    15         if(ContextCompat.checkSelfPermission(this, Manifest.
    16                 permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){
    17             ActivityCompat.requestPermissions(this,new String[]{
    18                     Manifest.permission.READ_CONTACTS},1);
    19         }else{
    20             readContacts();
    21         }
    22     }
    23     //查询联系人数据
    24     private void readContacts(){
    25         Cursor cursor=null;
    26         try{
    27             //查询联系人数据
    28             cursor=getContentResolver().query(ContactsContract.CommonDataKinds.
    29                     Phone.CONTENT_URI,null,null,null,null);
    30             if(cursor!=null){
    31                 while(cursor.moveToNext()){
    32                     //获取联系人姓名
    33                     String displayName=cursor.getString(cursor.getColumnIndex
    34                             (ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
    35                     //获取联系人电话
    36                     String number=cursor.getString(cursor.getColumnIndex
    37                             (ContactsContract.CommonDataKinds.Phone.NUMBER));
    38                     System.out.println(displayName+" "+number);
    39                     contactsList.add(displayName+"
    "+number);
    40                 }
    41                 //刷新
    42                 adapter.notifyDataSetChanged();
    43             }
    44         }catch (Exception e){
    45             e.printStackTrace();
    46         }finally{
    47             if(cursor!=null){
    48                 cursor.close();
    49             }
    50         }
    51     }
    52     /**
    53      * 当调用完requestPermissions()方法后,系统会弹出一个权限申请的对话框,用户可以选择拒绝或同意
    54      * 我们的权限申请,无论哪种结果,都会调用onRequestPermissionsResult方法,结果封装在grantResults中
    55      * @param requestCode 请求码
    56      * @param permissions 申请的权限
    57      * @param grantResults 用户运行申请的权限
    58      */
    59     @Override
    60     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    61         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    62         switch (requestCode){
    63             //System.out.println(grantResults[0]);
    64             case 1:
    65                 if(grantResults.length>0 & grantResults[0]==PackageManager.PERMISSION_GRANTED){
    66                     readContacts();
    67                 }else{
    68                     Toast.makeText(this,"你拒绝申请权限的请求",Toast.LENGTH_SHORT).show();
    69                 }
    70                 break;
    71             default:
    72                 break;
    73         }
    74     }
    75 }

    最后一步,修改AndroidManifest.xml文件,添加权限 <uses-permission android:name="android.permission.READ_CONTACTS"/>

    运行程序,结果:

     

  • 相关阅读:
    [LUOGU] 1364 医院设置
    [POJ] 3278 Catch That Cow
    [OpenJudge] 2727 仙岛寻药
    [POJ] 2386 Lake Counting
    [POJ]1118 Lining up
    [LUOGU]1141 01迷宫
    [POJ]1111 Image Perimeters
    python之路——初识函数
    python----------文件操作
    Python中的split()函数的用法
  • 原文地址:https://www.cnblogs.com/panqiaoyan/p/12937132.html
Copyright © 2011-2022 走看看