Android通过ContentProvider取得电话本的数据

今天原本想随便写个ContentProvider
demo玩玩的。。。但万万没想到一个简单的被我弄了4个小时才弄出来。。。关于ContentProvider今天就到这里把明天再去弄。。。以下代码经过测试

public class MainActivity extends Activity {

protected static final int PICK = 0;
private static final String TAG =
"MainActivity";
private TextView textView_name;
private TextView
textView_phone;
private Button button;
@Override
protected void
onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView_name=(TextView)
findViewById(R.id.TextView_name);
textView_phone=(TextView)
findViewById(R.id.TextView_phone);

button=(Button)
findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View v) {
Intent
intent=new
Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("vnd.android.cursor.item/phone");
startActivityForResult(intent,
PICK);
}
});
}

@Override
protected void onActivityResult(int requestCode, int
resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode,
data);
if(requestCode==PICK)
{
if(resultCode==Activity.RESULT_OK)
{
Uri
uri=data.getData();
CursorLoader cursorLoader=new
CursorLoader(this,uri,null,null,null,null);
Cursor
cursor=cursorLoader.loadInBackground();
if(cursor.moveToFirst())
{
String
contactId=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

String
name=cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
String
phoneNumber="此联系人暂未输入电话号码";
Log.i(TAG, "联系人:"+contactId);
Cursor
phones=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,

ContactsContract.CommonDataKinds.Phone._ID+"="+contactId,
  //这个地方一定要注意是_ID不是CONTACT_ID
null,

null);
Log.i(TAG,
"数据总数为:"+phones.getCount());

if(phones.moveToFirst())
{
phoneNumber=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
textView_name.setText(name);
textView_phone.setText(phoneNumber);
}
cursor.close();
}
}
}}

时间: 2024-07-31 22:05:49

Android通过ContentProvider取得电话本的数据的相关文章

Android之ContentProvider数据存储

一.ContentProvider保存数据介绍 一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProvider是以类似数据库中表的方式将数据暴露的.那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,只不过是采用URL来表示外界需要访问的"数据库". ContentProvider提供了一种多应用间数据共享的方式. ContentProvider是个实现了一组用于提供其他应用程序存取数据的标准方法的类.应用

Testin云测:微信电话本凭啥让运营商收入降低100多亿

Testin云测:微信电话本凭啥让运营商收入降低100多亿 2014/11/17 · Testin · 独家评测 日前腾讯发布微信电话本1.0版本,打出"高清免费通话"的标语,这对运营商而言,又是可能流失90%话音收入的"噩耗",中国移动相关人士甚至担忧会微信电话本可能导致损失100多亿元收入. 事实上,微信一直在蚕食运营商的势力范围.2013年,微信导致运营商短信使用量首次下滑,其全年短信使用量从7445亿条降低至7341亿条,中移动短信收入就从442亿减至413

java模拟而一个电话本操作

哈哈,大家平时都在使用电话本,下面使用java来模拟而一个简单的电话本吧... 首先给出联系人的抽象类 package net.itaem.po; /** * * 电话人的信息 * */ public class User { private String name; private String phoneNumber; private String companyName; private String email; private String address; private Strin

jdbc电话本项目

整体思路:在登陆之后才能查看自己的电话本,电话本中包含用户名,联系人名字,电话,性别,分类: 1.登陆注册页面--数据库User表,注册登陆使用 2.电话本的前段显示,用表格和表单, 3.创建存取的电话本的表的类,实现各种setget方法及构造方法 4.电话本需要查询,删除,添加,修改的功能,创建java文件实现这些方法 5.创建各种方法的servlet,实现这些功能, 注意:进行非空验证,还有就是在电话本的存储的表中要有隐藏的id,通过前台传入id,作为主键去判断实现那些方法,在登陆之后要注意

Android之ContentProvider

ContentProvider是Android的四大组件之一. 先说说我对这个东西的理解吧,ContentProvider就是用来存数据,用来共享数据的,比如:手机通讯录的联系人的信息以及手机上面存的相片,视频等等. 比较官方的解释: Android中的Content provider机制可支持在多个应用中存储和读取数据.这也是跨应用共享数据的方式之一,还有文件,sharePreference,SQLite数据库等方式存储共享数据库,但是ContentProvider更好的提供了数据共享接口的统

(Android review)ContentProvider的基本使用

1.某些数据库在外面是不能使用的.2.ContentProvider让A程序中的数据能让B程序使用3.ContentProvider主要是共享数据.可以添加ContentObserver来观察数据的变化4.<provider />中的authorities主要用于区分不同的provider5.content://cn.itcast.aqlite.provider((/person)/id)解析:content://    ----->固定写法,必须有cn.itcast.aqlite.pr

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 package com.example.imagescan; /** * GridView的每个item的数据对象 * * @author len * */ public class ImageBean{ /** * 文件夹的第一张图片路

如何来合理解决电商系统数据承载过大的问题呢?

原文地址:http://whosmall.com/?post=431 初创企业在发展过程中,一般不会遇到类似问题,但是随着业务量的增加,特别是电商系统,由于每日的订单数量过多,导致数据库的承载量过大,更换服务器的成本很大,所以如何来合理解决电商系统数据承载过大的问题呢? 1.从初始阶段,这应该是属于系统架构师应该考虑进去的事情,所以这项工作应该由架构师来完成: 2.如果没有合理的架构,那么在需要解决这个问题的时候,可以通过数据库分库,分表.切片的方式来进行.(再次强调这是个技术问题,产品不背锅)

记一次开发:Qt简单电话本程序

前言 断断续续学习C++一年了,现在要做课设,觉得控制台界面实在太难看,于是用Qt做一个图形化的程序出来. 学习Qt也没有多久,只是了解了个大概,这次开发基本上是啃了2天的官方帮助文档,然后利用各种Qt提供的轮子实现的.有些地方做的确实还很不完善,不过似乎没有什么致命的bug. 代码质量底下,谨慎模仿. Qt真的是一个很好的C++扩展库,学习完C++觉得没有用武之地的可以去学习一下Qt来开发几个图形化软件来练练手. 项目介绍 实现一个简单的电话本程序,能够实现添加.查找.修改.删除.保存到文件等