导航:首页 > 操作系统 > android联系人uri

android联系人uri

发布时间:2022-07-27 21:07:24

⑴ 如何获取android手机联系人并按字母展示

android提供了本地数据库的查询uri,可以查询出数据:
采用一个AsyncQueryHandler来进行查询, AsyncQueryHandler自己开启了线程来进行数据查询,很方便

protected AsyncQueryHandler mQueryHandler;

protected final void queryPersonal() {
mQueryHandler.startQuery(QUERY_TOKEN, null, ContactsContract.Contacts.CONTENT_URI,
Personal.CONTACTS_SUMMARY_PROJECTION, null, null, getSortOrder(ContactsContract.Contacts.DISPLAY_NAME));
}

protected static String getSortOrder(String fieldName) {
//substr为截取函数,取第一个字母
//COLLATE主要用于对字符进行排
//COLLATE LOCALIZED 按本地语言进行排序
return "CASE WHEN substr(UPPER(" + fieldName + "), 1, 1) BETWEEN 'A' AND 'Z' THEN 1 else 10 END," +
fieldName + " COLLATE LOCALIZED ASC";
}

protected final class MyHandler extends AsyncQueryHandler {
/**
* Asynchronous query handler constructor.
*/
public MyHandler(Context context) {
super(context.getContentResolver());
}

/**
* On query completion.
*/
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) { //handler查询完的回调
if (cursor == null || cursor.isClosed()) {
return;
}
if (!isFinishing()) {
setLoading(false);
if (mAdapter != null) {
mAdapter.setLoading(false);
mAdapter.changeCursor(cursor);
}

if (cursor.getCount() == 0) {
mEmtytext.setVisibility(View.VISIBLE);
} else {
mEmtytext.setVisibility(View.INVISIBLE);
}
} else {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
}

⑵ android 怎么调用联系人列表,并将选择的联系人号码显示在文本框里

跳转到联系人:
Intent i = new Intent(Intent.ACTION_PICK);
i.setType("vnd.android.cursor.dir/phone");
startActivityForResult(i, 0);

获取选择的号码:
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {
case 0:
if (data == null) {
return;
}
Uri uri = data.getData();
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();

String number = cursor.getString(cursor.getColumnIndexOrThrow(Phones.NUMBER));

Log.d(TAG, "number" + number);

mContactText.setText(number);
mContactText.setSelection(number.length());
break;

default:
break;
}
}

⑶ android 1.6中删除联系人 uri是

删除都是通过URI来删除的,如果你要想删除指定ID的联系人,只需把这个id链接成新的URI就行Uri
uri
=
ContentUris.withAppendedId(
ContactsContract.RawContacts.CONTENT_URI,
Integer.valueOf(id));

⑷ android 中的uri到底是什么

URI是统一资源标识符(Uniform Resource Identifier) 的意思,它的作用是根据这个URI找到某个资源文件,基本格式如: file:///sdcard/temp.jpg(就是根据你提供的例子生成的一个路径)
ContentProvider是程序间共享数据的,它也需要生成URI供别的程序调用,格式如:

content:///StudentDB/student/name,以后你在别的程序想访问另一个程序里的数据库,就可以用这个URI去访问了,而不用进行数据库连接的操作,非常方便
URL显得很宏观,是网络资源定位的,而URI是应用程序内部或之间定位

⑸ android如何获取联系人所有信息

获取联系人必须添加权限

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

如何获取手机联系人信息

根据ContactsContract.Contacts.CONTENT_URI查询ContentResolver里面的数据,逐个取值即可。

如何获取sim卡的联系人信息

根据目前查找的信息来看,sim联系人的uri有两种:

⑹ android 平台数据库表与uri对应关系看不明白,请高人指点

android的联系人数据库是一个三层架构,raw_contacts表,contacts表,data表合起来,才能完整的表示一个联系人的所有信息。那为什么不直接设计一张contacts表示所有联系人呢?理由是,联系人的数据是易变的,而且数据种类繁多。打个比方,你可以随意的把两个联系人合并在一起,也可以随意的为一个联系人增加新的信息(如家庭地址,邮件地址,昵称,头像等等),把所有信息合并放在一张表里明显是不可能的。数据库设计时考虑的可扩展,可维护。

由于android底层的数据库很复杂,开发者想得到一个联系人的信息时,经常需要访问3-4张的表才能获取到完整数据,这个过程是很复杂很繁琐的。好在开发时你不用关注这些,因为android帮你把这些已经封装好了,你能看到也就是ContactsContract这个类里面抽象好了的映射。事实上,ContactsContract这个类是根据功能进行抽象的,和底层实现完全没有任何关系。他们之间通过某个ContentProvider连系起来,当你请求content://com.android.contacts/contacts这个字段时,会调用ContentProvider,ContentProvider根据你的uri生成查询不同的表的sql语句,然后把查询结果返回给你。

结果表现就是,你在ContactsContract这个类看到某些字段在对应的表里找不到,因为这个字段被放到其他的表里面去了。

⑺ android中uri由哪三部分组成,简述其意义

通用资源标志符(Universal Resource Identifier, 简称"URI")。
Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。
URI一般由三部分组成:
在Android平台,URI主要分三个部分:scheme, authority and path。
其中authority又分为host和port。格式如下:scheme://host:port/path
举个实际的例子:
content://com.example.project:200/folder/subfolder/etc
\---------/ \------------------ -/ \--/ \----------------------/
scheme host port path
\---------------------------/
authority

我们很经常需要解析Uri,并从Uri中获取数据。

⑻ android开发怎样获取通讯录联系人信息

在Android开发中,我经常会遇到需要获取手机通讯录联系人信息,Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息获取出来。
下面直接贴出代码供大家参考:
程序文件java代码:
import java.io.InputStream;
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class ContactsActivity extends ListActivity {

Context mContext = null;

/**获取库Phon表字段**/
private static final String[] PHONES_PROJECTION = new String[] {
Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID,Phone.CONTACT_ID };

/**联系人显示名称**/
private static final int PHONES_DISPLAY_NAME_INDEX = 0;

/**电话号码**/
private static final int PHONES_NUMBER_INDEX = 1;

/**头像ID**/
private static final int PHONES_PHOTO_ID_INDEX = 2;

/**联系人的ID**/
private static final int PHONES_CONTACT_ID_INDEX = 3;

/**联系人名称**/
private ArrayList<String> mContactsName = new ArrayList<String>();

/**联系人头像**/
private ArrayList<String> mContactsNumber = new ArrayList<String>();

/**联系人头像**/
private ArrayList<Bitmap> mContactsPhonto = new ArrayList<Bitmap>();

ListView mListView = null;
MyListAdapter myAdapter = null;

@Override
public void onCreate(Bundle savedInstanceState) {
mContext = this;
mListView = this.getListView();
/**得到手机通讯录联系人信息**/
getPhoneContacts();

myAdapter = new MyListAdapter(this);
setListAdapter(myAdapter);

mListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long id) {
//调用系统方法拨打电话
Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri
.parse("tel:" + mContactsNumber.get(position)));
startActivity(dialIntent);
}
});

super.onCreate(savedInstanceState);
}

/**得到手机通讯录联系人信息**/
private void getPhoneContacts() {
ContentResolver resolver = mContext.getContentResolver();

// 获取手机联系人
Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION, null, null, null);

if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {

//得到手机号码
String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);
//当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;

//得到联系人名称
String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX);

//得到联系人ID
Long contactid = phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);

//得到联系人头像ID
Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);

//得到联系人头像Bitamp
Bitmap contactPhoto = null;

//photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的
if(photoid > 0 ) {
Uri uri =ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(resolver, uri);
contactPhoto = BitmapFactory.decodeStream(input);
}else {
contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.contact_photo);
}

mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
mContactsPhonto.add(contactPhoto);
}

phoneCursor.close();
}
}

/**得到手机SIM卡联系人人信息**/
private void getSIMContacts() {
ContentResolver resolver = mContext.getContentResolver();
// 获取Sims卡联系人
Uri uri = Uri.parse("content://icc/adn");
Cursor phoneCursor = resolver.query(uri, PHONES_PROJECTION, null, null,
null);

if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {

// 得到手机号码
String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到联系人名称
String contactName = phoneCursor
.getString(PHONES_DISPLAY_NAME_INDEX);

//Sim卡中没有联系人头像

mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}

phoneCursor.close();
}
}

class MyListAdapter extends BaseAdapter {
public MyListAdapter(Context context) {
mContext = context;
}

public int getCount() {
//设置绘制数量
return mContactsName.size();
}

@Override
public boolean areAllItemsEnabled() {
return false;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
ImageView iamge = null;
TextView title = null;
TextView text = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.colorlist, null);
iamge = (ImageView) convertView.findViewById(R.id.color_image);
title = (TextView) convertView.findViewById(R.id.color_title);
text = (TextView) convertView.findViewById(R.id.color_text);
}
//绘制联系人名称
title.setText(mContactsName.get(position));
//绘制联系人号码
text.setText(mContactsNumber.get(position));
//绘制联系人头像
iamge.setImageBitmap(mContactsPhonto.get(position));
return convertView;
}

}
}

⑼ 安卓android怎么以数组方式获取所有联系人

//读取手机里面的联系人
public List<Map<String, String>> getContactInfo() {
//吧所有联系人填进去
List<Map<String, String>> list = new ArrayList<Map<String, String>>();

ContentResolver resolver = getContentResolver();
String uristring = "content://com.android.contacts/raw_contacts";
String data = "content://com.android.contacts/raw_contacts/data";
Uri uri = Uri.parse(uristring);
Uri uridata = Uri.parse(data);
Cursor cursor = resolver.query(uri, new String[]{"contact_id"}, null, null, null);

while (cursor.moveToNext()) {
String contact_id = cursor.getString(0);
if (contact_id != null) {
//具体的某一个联系人
Map<String, String> map = new HashMap<String, String>();
Cursor datacursor = resolver.query(uridata, new String[]{"data1", "mimetype"}, "contact_id=?", new String[]{contact_id}, null);
while (datacursor.moveToNext()) {
String data1 = datacursor.getString(0);
String mimetype = datacursor.getString(1);
if ("vnd.android.cursor.item/name".equals(mimetype)) {
//联系人的姓名
map.put("name", data1);
} else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
//联系人的电话号码
map.put("phone", data1);
}

}
list.add(map);
datacursor.close();
}
}
return list;
}

⑽ Android里为什么能通过Uri: content://contacts/people找到联系人

data路径下是联系人app本地的存储地址,外界是不能访问的,content地址是联系人app的内容提供者对外提供的地址,外界的app可以用内容解析者通过其提供的url可以对其数据库进行曾删改查

阅读全文

与android联系人uri相关的资料

热点内容
c语言常用算法pdf 浏览:960
编程如何让画面动起来 浏览:865
大龄女程序员未来发展 浏览:976
数学书籍pdf 浏览:506
加密门禁卡写入成功无法开门 浏览:464
齿轮传动pdf 浏览:52
alpinelinux 浏览:150
手机端app的扫码功能在哪里 浏览:227
少儿编程中小班英语教案 浏览:452
锁屏密码加密手机怎么解除 浏览:205
linuxlostfound 浏览:134
征途服务器ip地址 浏览:330
git提交代码命令行 浏览:165
什么叫浏览器服务器结构 浏览:157
于谦聊天哪个app 浏览:449
小鹏汽车nlp算法工程师薪资 浏览:881
代码加密与隐藏 浏览:649
fordfulkerson算法 浏览:352
京东热app在哪里可以下载 浏览:877
彩报图书app哪个好 浏览:303