返回顶部
首页 > 资讯 > 移动开发 >Android ContentProvider查看/读取手机联系人实例
  • 583
分享到

Android ContentProvider查看/读取手机联系人实例

联系手机Android 2022-06-06 04:06:18 583人浏览 安东尼
摘要

看到某些App里面有读取联系人的功能,然后自己尝试了一下。发现这个挺简单的。然后自己就做了一个demo给大家,希望借这个demo可以让大家学习一下怎么实现读取手机联系人。 这里

看到某些App里面有读取联系人的功能,然后自己尝试了一下。发现这个挺简单的。然后自己就做了一个demo给大家,希望借这个demo可以让大家学习一下怎么实现读取手机联系人。

这里我用了两种方法去读取:第一张图片是跳转到系统自带的联系人界面,第二种就是直接去读取让后绑上来显示在主页面。话不多说直接上代码。

记得在AndroidManifest.xml 记得加入这两句,不然就读取不到联系人。


<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

package com.example.android_contentersolver;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.provider.ContactsContract;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.main_btn).setOnClickListener(new OnClickListener() { 
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        //查询联系人号码
        final Cursor cursor = getContentResolver()
            .query(ContactsContract.CommonDataKinds
            .Phone.CONTENT_URI, null, null, null, null);
         BaseAdapter adapter = new BaseAdapter()
         {
           @Override
           public int getCount()
           {
             return cursor.getCount();
           }
           @Override
           public Object getItem(int position)
           {
             return position;
           }
           @Override
           public long getItemId(int position)
           {
             return position;
           }
           @Override
           public View getView(int position,
               View convertView, ViewGroup parent)
             {
               cursor.moveToPosition(position);
//               CheckBox rb = new CheckBox(MainActivity.this);
               TextView text=new TextView(MainActivity.this);
               // 获取联系人的电话号码,并去掉中间的中划线、空格
               String number = cursor
                 .getString(cursor.getColumnIndex(
                 ContactsContract.CommonDataKinds
                 .Phone.NUMBER))
                 .replace("-", "")
                 .replace(" ", "");
//               rb.setText(number);
               String name = cursor
                   .getString(cursor.getColumnIndex(
                   ContactsContract.CommonDataKinds
                   .Phone.DISPLAY_NAME));
                text.setText("名字:"+name+"  电话号码:"+number);
               return text;
             }
         };
       //加载listview
       ListView listview=(ListView) findViewById(R.id.mian_list);
       listview.setAdapter(adapter);
      }
    });
    //跳转系统的联系人界面
    findViewById(R.id.main_btn_sys).setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent=new Intent();
        intent.setAction(intent.ACTION_PICK);
        intent.setType("vnd.android.cursor.dir/phone");
        startActivityForResult(intent, 0x100);
      }
    });
  }
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  super.onActivityResult(requestCode, resultCode, data);
    Uri uri=data.getData();
    Cursor cursor = getContentResolver()
        .query(uri, null, null, null, null);
    while(cursor.moveToNext()){
      String name=cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NAME));
      String number=cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NUMBER));
      TextView textview=(TextView) findViewById(R.id.mian_lists);
      textview.setText("名字:"+name+"  电话号码:"+number);
    }
  }
}

这是主界面

这里写图片描述

这里写图片描述

这里写图片描述

您可能感兴趣的文章:Android ContentProvider实现获取手机联系人功能Android数据持久化之ContentProvider机制详解Android ContentProvider获取手机联系人实例实例解析Android系统中的ContentProvider组件用法实例讲解Android中ContentProvider组件的使用方法Android应用中使用ContentProvider扫描本地图片并显示Android 中ContentProvider的实例详解


--结束END--

本文标题: Android ContentProvider查看/读取手机联系人实例

本文链接: https://lsjlt.com/news/22380.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作