iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android使用ContentResolver搜索手机通讯录的方法
  • 599
分享到

Android使用ContentResolver搜索手机通讯录的方法

方法手机Android 2022-06-06 09:06:46 599人浏览 八月长安
摘要

本文实例讲述了Android使用ContentResolver搜索手机通讯录的方法。分享给大家供大家参考,具体如下: 在这个程序中使用ContentResolver来访问通讯录

本文实例讲述了Android使用ContentResolver搜索手机通讯录的方法。分享给大家供大家参考,具体如下:

在这个程序中使用ContentResolver来访问通讯录里联系人的关键字,并将所有找到的联系人存入CursorAdapter里。输入搜索人员名字a ,会将所有以a开头的名字都显示出来,输入*,则所有通讯录中的人名显示于AutoCompleteView的AdapterView里,若发生了User选择事件后,会将勾选的联系人电话号码显示于TextView里。

此程序中用到了ContentResolver .query(Uri  uri, String[]  projection, String  selection, String[]    selectionArgs, String  sortOrder)来取出通讯录里的所有联系人;其中将selection及selectionArgs传入null代表将所有联系人找出来。用Cursor 的getString(column index)的方式来取得存储内容,其中column index从0开始,这一点与java.sql.ResultSet不同,因为它是从1开始的。用AutoCompleteTextView.OnItemClickListener事件,这也是当用户单击联系人之后所拦截的事件处理,在其中便以ContactsAdapter.getCursor()方法取得联系人的电话号码。

程序如下:


import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.TextView;
@SuppressWarnings("deprecation")
public class A07Activity extends Activity {
 private AutoCompleteTextView actv;
 private TextView tv;
 private Cursor c01;
 private ContactsAdapter ca;
 //找出通讯录中的字段
 public static String[] people={
  Contacts.People._ID,
  Contacts.People.PRIMARY_PHONE_ID,
  Contacts.People.TYPE,
  Contacts.People.NUMBER,
  Contacts.People.LABEL,
  Contacts.People.NAME
     }; 
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    actv=(AutoCompleteTextView)findViewById(R.id.actv);
    tv=(TextView)findViewById(R.id.tv);
    ContentResolver cr=getContentResolver();
    c01=cr.query(Contacts.People.CONTENT_URI, people, null, null, Contacts.People.DEFAULT_SORT_ORDER);
    ca=new ContactsAdapter(this,c01);
    actv.setAdapter(ca);
    actv.setOnItemClickListener(new OnItemClickListener(){
  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
   long arg3) {
  // TODO Auto-generated method stub
  Cursor c02=ca.getCursor();
  c02.moveToPosition(arg2);
  String number=c02.getString(c02.getColumnIndexOrThrow(Contacts.People.NUMBER));
  number=number==null?"无电话输入": number;
  tv.setText(c02.getString(c02.getColumnIndexOrThrow(Contacts.People.NAME))+"的电话是:"+number);
  }
    });
  }
}

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.Contacts;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.TextView;
@SuppressWarnings("deprecation")
public class ContactsAdapter extends CursorAdapter{
 ContentResolver cr;
 public ContactsAdapter(Context context, Cursor c) {
 super(context, c);
 // TODO Auto-generated constructor stub
 cr=context.getContentResolver();
 }
 @Override
 public void bindView(View view, Context context, Cursor cursor) {
 // TODO Auto-generated method stub
 ((TextView)view).setText(cursor.getString(cursor.getColumnIndexOrThrow(Contacts.People.NAME)));
 }
 @Override
 public View newView(Context context, Cursor cursor, ViewGroup parent) {
 // TODO Auto-generated method stub
 final LayoutInflater li=LayoutInflater.from(context);
 final TextView tv=(TextView)li.inflate(android.R.layout.simple_dropdown_item_1line, parent, false);
 tv.setText(cursor.getString(cursor.getColumnIndexOrThrow(Contacts.People.NAME)));
 return tv;
 }
 public String converToString(Cursor c){
 return c.getString(c.getColumnIndexOrThrow(Contacts.People.NAME));
 }
 @SuppressWarnings("null")
 public Cursor runQueryOnBackgroundThread(CharSequence cs){
 if(getFilterQueryProvider()!=null){
  getFilterQueryProvider().runQuery(cs);
 }
 StringBuilder sb=null;
 String[] s=null;
 if(cs==null){
  sb=new StringBuilder();
  sb.append("UPPER(");
  sb.append(Contacts.ContactMethods.NAME);
  sb.append(")GLOB?");
   s=new String[]{cs.toString().toUpperCase()+"*"};
 }
 return cr.query(
    Contacts.People.CONTENT_URI,
    A07Activity.people, 
    sb==null? null:sb.toString(),
     s, 
     Contacts.People.DEFAULT_SORT_ORDER
     );
 }
}

AndroidManifest.xml如下所示:


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="Http://schemas.android.com/apk/res/android"
  package="com.my.a07"
  android:versionCode="1"
  android:versionName="1.0" >
  <uses-sdk android:minSdkVersion="10" />
  <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
      android:name=".A07Activity"
      android:label="@string/app_name" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <cateGory android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
  </application>
  <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
</manifest>

通过ContentResolver还可以添加、修改、删除通讯录中的信息;并且通过它还可以访问audio、video、images等数据。相应方法展示如下:

添加:public final Uri insert(Uri uri,ContentValues values),ContentValue.put(key,value) ,其中key为字段名称,value为添加的数据。

修改:public final int update(Uri uri,ContentValues values,String where ,String[] selectionArgs),其中where为sql where 后面的条件字符串。selectionArgs为where里的数据。

删除:public final int delete(Uri uri,String where,String[] selectionArgs).

下面再使用ContentValue.put()方法。通过程序添加通讯录里的联系人的资料。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》及《Android开发入门与进阶教程

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:android手机获取gps和基站的经纬度地址实现代码Android编程操作手机通讯录的方法示例Android跳转到通讯录获取用户名称和手机号码的实现思路Android实现通讯录效果——获取手机号码和姓名Android手机联系人快速索引(手机通讯录)Android获取手机通讯录、sim卡联系人及调用拨号界面方法Android仿手机通讯录地址选择功能


--结束END--

本文标题: Android使用ContentResolver搜索手机通讯录的方法

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android编程操作手机通讯录的方法示例
    本文实例讲述了Android编程操作手机通讯录的方法。分享给大家供大家参考,具体如下:手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息。类似的操作还有收藏夹的操作,下面就针对通讯录的操作来做个小例子。同样的这次也...
    99+
    2023-05-30
    android 通讯录
  • 解决android手机导出的通讯录vcf文件乱码方法
    要解决Android手机导出的通讯录vcf文件乱码的问题,可以尝试以下方法:1. 修改编码格式:打开vcf文件,使用文本编辑器(例如...
    99+
    2023-09-08
    Android
  • Android SearchView搜索控件使用方法详解
    本文实例为大家分享了Android SearchView搜索控件的具体实现代码,供大家参考,具体内容如下 方法介绍 setQueryHint 设置 Hint 的文字内容 setMax...
    99+
    2024-04-02
  • Android添加联系人到通讯录的方法
    目录字段联系人名字联系人昵称联系人头像联系人备注联系人号码联系人公司和职位网站联系人邮箱联系人地址添加方式1. 静默添加2. 跳转添加3. 添加到现有联系人权限字段 联系人名字 ...
    99+
    2024-04-02
  • Android保存联系人到通讯录的方法
    上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录。这里我就假设你已经拿到了要保存的联系人数据。 因为是一个工具类,所以我这里就只给一个方法了,也是很简单,但是写的没有读取联系人的数据那么多,要保存更多...
    99+
    2023-05-30
    android 联系人 通讯录
  • Android 通知栏的使用方法
    目录一、设置通知内容二、创建渠道三、设置通知栏的点击操作四、显示通知一、设置通知内容 //CHANNEL_ID,渠道ID,Android 8.0及更高版本必须要设置 N...
    99+
    2024-04-02
  • win8.1本地搜索无法使用怎么办?win8.1无法使用本地搜索的解决方法
    win8.1本地搜索无法使用怎么办?如果需要找某个软件或者文件夹时,通常情况下我们会使用本地搜索来查找,非常的方便!但是最近有一些win8.1的用户在使用本地搜索时却发现无法使用!这要怎么办呢下面就让我们一起来看看win...
    99+
    2023-05-22
    本地搜索无法使用 win8.1本地搜索无法使用怎么办
  • win10手机预览版10080 Cortana搜索崩溃的解决方法
      微软已向Windows Insider用户推送最新win10手机预览版10080更新,并公布win10手机预览版10080已知Bug汇总,其中有Cortana微软小娜遭遇一部分问   “如果你的Co...
    99+
    2023-06-15
    win10手机预览版 Cortana 手机 预览 解决 win10
  • mysql+mybatis下全文搜索的使用方法
    第一步在你的需要全文搜索的列上点击 全文搜索full text类型索引,注意我的例子是该列是个longText类型的列 第一步建立fulltext类型索引如下图 索引类型选择fu...
    99+
    2024-04-02
  • 腾讯云轻量云服务器的手机端登录和使用方法
    1. 下载腾讯云 APP 首先,在手机应用商店中搜索并下载腾讯云 APP。安装完成后,打开 APP。 2. 登录腾讯云账号 在腾讯云 APP 中,点击登录按钮。如果你已经有腾讯云账号,输入你的账号和密码进行登录。如果你还没有腾讯云账号,点...
    99+
    2023-10-27
    腾讯 使用方法 服务器
  • 台式机win8中本地搜索功能无法使用的解决方法
    这篇文章主要为大家展示了“台式机win8中本地搜索功能无法使用的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“台式机win8中本地搜索功能无法使用的解决方法”这篇文章吧。本地搜索功能无法...
    99+
    2023-06-27
  • Android调用手机摄像头的方法
    本文实例为大家分享了Android调用手机摄像头的具体代码,供大家参考,具体内容如下 根据<第一行代码>进行改写: 布局文件,只有一个按钮,和一个Imageview,im...
    99+
    2024-04-02
  • win7搜索功不能正常使用的解决方法
    搜索功能,可帮助用户快速找到所需的文件或程序,搜索功能虽然速度不太给力但是准确度还是有保障。一位用户说win7搜索功不能用了,没办法搜索到想要的文件,怎么办呢?有什么方法可以恢复搜索功能?大部分情况下搜索功能失灵都是因为...
    99+
    2023-05-21
    win7搜索功能 win7搜索
  • 手机登录腾讯云服务器失败的解决方法
    1. 检查网络连接 首先,当你尝试使用手机登录腾讯云服务器时,确保你的手机已连接到可靠的网络。你可以尝试连接其他网站或应用程序来确认你的网络连接是否正常。如果你的网络连接存在问题,你可以尝试重新连接或更换网络。 2. 检查账号和密码 确保...
    99+
    2023-10-27
    腾讯 解决方法 服务器
  • 腾讯云服务器手机登录电脑账号的方法
    1. 下载腾讯云APP 首先,在您的手机上下载并安装腾讯云APP。您可以在应用商店中搜索“腾讯云”并下载安装。 2. 打开腾讯云APP并登录 打开腾讯云APP后,使用您的腾讯云账号登录。如果您还没有腾讯云账号,可以在APP中注册一个新账号...
    99+
    2023-10-27
    腾讯 账号 服务器
  • 腾讯云服务器如何使用手机登录账号密码设置方法
    为了防止账号被盗用,我们需要设置密码。腾讯云服务器提供了多种密码类型供我们选择,包括数字、符号和特殊字符等。在设置密码时,我们需要注意以下几点: 长度要足够长,至少应该等于12个字符。 避免使用常见的密码组合,如生日、姓名等。 不要使用...
    99+
    2023-10-28
    腾讯 如何使用 账号
  • 使用手机登录云服务器账号密码的方法
    1. 下载远程桌面应用 首先,你需要在手机上下载一个远程桌面应用,例如Microsoft Remote Desktop、TeamViewer或AnyDesk。这些应用可以让你通过手机远程连接到云服务器。 2. 配置远程桌面应用 打开远程桌...
    99+
    2023-10-27
    账号 密码 服务器
  • 手机如何控制腾讯云服务器使用方法
    首先,让我们看看如何在手机上设置腾讯云服务器。 首先,你需要在你的设备上下载腾讯云服务器的应用程序,并在应用程序的主界面中找到“腾讯云服务器”这个选项。这个选项会在应用程序的主界面中显示。 接下来,点击“添加服务器”按钮。这会让你输入你腾...
    99+
    2023-10-28
    腾讯 使用方法 服务器
  • 手机登录腾讯云服务器失败的原因及解决方法
    1. 网络连接问题 如果你在手机上登录腾讯云服务器时遇到问题,首先要检查的是你的网络连接。确保你的手机已连接到可靠的网络,并且信号强度良好。如果你使用的是移动数据网络,可能会受到网络信号不稳定或者运营商限制的影响。尝试切换到其他网络或者使...
    99+
    2023-10-27
    腾讯 解决方法 原因
  • 使用C语言实现本地socke通讯的方法
    一、概述   使用本地socket通讯可以实现进程之间的通讯。   相关函数描述如下: int socket(int domain, int type, int protocol...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作