我正在使用此代码检索所有联系人姓名和电话号码:
String[] projection = new String[]
{
People.NAME,
People.NUMBER
};
Cursor c = ctx.getContentResolver().query(People.CONTENT_URI, projection, null, null, People.NAME + " ASC");
c.moveToFirst();
int nameCol = c.getColumnIndex(People.NAME);
int numCol = c.getColumnIndex(People.NUMBER);
int nContacts = c.getCount();
do
{
// Do something
} while(c.moveToNext());
Run Code Online (Sandbox Code Playgroud)
但是,这只会返回每个联系人的主号码,但我也想获得次要号码.我怎样才能做到这一点?
我试图将所有联系人电话号码保存在ArrayList中,但我无法找到方法.有没有办法让他们而不是用ContactsContract一个一个地挑选它们?
我希望使用新的api contactContracts获取保存在手机中的联系人而不是sim联系人
我这样做是通过过滤帐户类型(而不是com.anddroid.contacts.sim),这项工作适用于一个手机(HTC Desire),但没有找到适用于所有手机的常见帐户类型,任何人都可以告诉我该怎么做
请看一看 :-
public static ArrayList<ContactsEntityBean> getContactDetails(
Context mContext) {
ArrayList<ContactsEntityBean> contactList = new ArrayList<ContactsEntityBean>();
ContentResolver cr = mContext.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
Cursor cur1 = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null, ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = ?", new String[] {
id
}, null);
while (cur1.moveToNext()) {
ContactsEntityBean contactsEntityBean = new ContactsEntityBean();
// to get the contact names
String name = cur1
.getString(cur1
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
// Log.e("Name :", name); …Run Code Online (Sandbox Code Playgroud) 我正在运行一个查询CommonDataKinds.Phone.CONTENT_URI ,我得到的所有结果都有一个NOT NULL手机ID.
几乎是代码:
String[] projection2 = new String[] {
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
};
String where2 = ContactsContract.CommonDataKinds.Phone._ID + " != ''" ;
Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
projection2, where2, null, null);
Run Code Online (Sandbox Code Playgroud)
然后我遍历每个游标结果并获得我想要的列.代码是:
if (phoneCursor.getCount() > 0) {
while (phoneCursor.moveToNext()) {
String contacts_id = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts._ID));
String phone_id = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
Log.i("phonecursor", "contacts_id= " + contacts_id + " phone_id " + phone_id
+ " contacts_name= " + contacts_name + " phone_name= " + phone_name
+ " Phone= " + phone …Run Code Online (Sandbox Code Playgroud) 以下是我的代码,实际上在屏幕上它没有向我显示任何联系.在模拟器中我添加了5个联系人.请告诉我该怎么办.
{
//some code
Cursor cur = getContacts();
String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME};
SimpleCursorAdapter adapter =
new SimpleCursorAdapter(this,
R.layout.list_view_item_new,
cur,
fields,
new int[] {R.id.contactEntryText});
lv.setAdapter(adapter);
}
private Cursor getContacts() {
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection =
new String[]{ ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
String selection = null;
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME +
" COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
Run Code Online (Sandbox Code Playgroud) 我知道Android 联系人选择器为我们提供了任何选定的 URI Contact。
URI 如下所示: content://com.android.contacts/contacts/lookup/0r7-2C46324E483C324A3A484634/7
我需要获取手机中所有联系人的 URI(类似于“URI 数组”)。有人可以帮我做这件事吗?
我正在努力从电话中获取联系,为此,我正在使用名称和Implement LoaderCallbacks<Cursor>创建一个新类。现在,我想在创建该类的对象时自动调用loaderManager。取得联络人FetchContactsloaderManager
public class FetchContacts implements LoaderManager.LoaderCallbacks<Cursor> {
private Context context;
FetchContacts(Context ctx){
context = ctx;
getLoaderManager().initLoader(0, null, this); // Error: Undefined method
}
// Reset of code like override methods.
Run Code Online (Sandbox Code Playgroud)
主要活动
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FetchContacts fetchContacts = new FetchContacts(this);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道错误的原因,因为FetchContacts它不是从Activity类扩展的。是否有必要从Activity类扩展它,或者是否有其他方法从MainActivity调用它?