如何解决将所有电话簿的联系方式都放入android中的数组
| 我将所有电话簿的联系方式作为一个数组来获取。为此,我编写了以下代码:package com.android.toggle2;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import android.app.ListActivity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.widget.listadapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class Toggle3 extends ListActivity
{
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Cursor mCursor = getContacts();
startManagingCursor(mCursor);
// Now create a new list adapter bound to the cursor.
// Simplelistadapter is designed for binding to a Cursor.
listadapter adapter = new SimpleCursorAdapter(this,// Context.
android.R.layout.simple_list_item_multiple_choice,// Specify the row template
// to use (here,two
// columns bound to the
// two retrieved cursor
// rows).
mCursor,// Pass in the cursor to bind to.
// Array of cursor columns to bind to.
new String[] { ContactsContract.Contacts.disPLAY_NAME,ContactsContract.Contacts._ID},// Parallel array of which template objects to bind to those
// columns.
new int[] { android.R.id.text1,android.R.id.text2 });
// Bind to our new adapter.
setlistadapter(adapter);
final ListView listView = getListView();
listView.setItemsCanFocus(false);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID,ContactsContract.Contacts.disPLAY_NAME };
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + \" = \'\"
+ (\"1\") + \"\'\";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.disPLAY_NAME+ \" COLLATE LOCALIZED ASC\";
return managedQuery(uri,projection,selection,selectionArgs,sortOrder);
}
protected void onListItemClick(ListView l,View v,int position,long id)
{
super.onListItemClick(l,v,position,id);
//here i want to handle the event.and should display the details of that contacts in another screen .
//Toast.makeText(Toggle3.this,\"Item in position \" + position + \" clicked\",Toast.LENGTH_LONG).show();
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null,null);
if (cur.getCount() > 0)
{
while (cur.movetoNext())
{
String ids = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.disPLAY_NAME));
list.add(new BasicNameValuePair(\"name\",name.toString()));
//String number = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.NUMBER));
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
//Query phone here.
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +\" = ?\",new String[]{ids},null);
while(pCur.movetoNext())
{
String number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
list.add(new BasicNameValuePair(\"num\",number.toString()));
}
pCur.close();
}//if
}//while
Log.i(\"array items\",\"\" +list);
}//if
}//on click
}//class
在执行此应用程序时,它会在应用程序中显示我所有的电话簿联系人,并在每一行中都带有复选框。如果我单击任何名称(列表项),它将所有联系人详细信息存储到数组中。但是我只想存储选定的联系人。我应该在代码中进行哪些更改..请提供必要的帮助
解决方法
我已经修改了您的代码。现在,它的工作符合预期。如果对您有帮助,请投票给我,以便它也能提高您的评分
使用以下代码从手机检索联系人。
我测试过了工作正常
public static void getContactNumbers(Context context) {
String contactNumber = null;
int contactNumberType = Phone.TYPE_MOBILE;
String nameOfContact = null;
if (ApplicationConstants.phoneContacts.size() <= 0) {
ContentResolver cr = context.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null,null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur
.getColumnIndex(BaseColumns._ID));
nameOfContact = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer
.parseInt(cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor phones = cr
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ \" = ?\",new String[] { id },null);
while (phones.moveToNext()) {
contactNumber = phones.getString(phones
.getColumnIndex(Phone.NUMBER));
contactNumberType = phones.getInt(phones
.getColumnIndex(Phone.TYPE));
Log.i(TAG,\"...Contact Name ....\" + nameOfContact
+ \"...contact Number...\" + contactNumber);
}
phones.close();
}
}
}// end of contact name cursor
cur.close();
}
}
, Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null);
while (phones.moveToNext())
{
String Name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
String Number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。