導航:首頁 > 操作系統 > 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相關的資料

熱點內容
千鋒python人工智慧培訓 瀏覽:855
合理的文件夾劃分 瀏覽:258
十點讀書app哪裡下載 瀏覽:964
uu跑腿押金上app在哪裡解約 瀏覽:37
華為如何將app移到桌面 瀏覽:597
阿里安卓面試演算法題 瀏覽:705
語文知識手冊pdf 瀏覽:841
為什麼安卓手機oled屏很白很亮 瀏覽:252
如何找回iphone手機隱藏的app 瀏覽:21
linuxc多進程 瀏覽:649
android飛行游戲 瀏覽:965
數據挖掘常見演算法 瀏覽:135
python單實例化 瀏覽:351
str中python 瀏覽:89
java的equals用法 瀏覽:845
奧維雲伺服器怎麼開通 瀏覽:171
js取得伺服器地址 瀏覽:812
起點中文網小說緩存在哪個文件夾 瀏覽:216
java瘋狂講義pdf 瀏覽:300
推有錢app在哪裡 瀏覽:745