Работа с Контактами на телефоне.

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Работа с Контактами на телефоне.

Сообщение Elek » 20 апр 2013, 23:11

Добрый день, пытаюсь понять как лучше работать с контактами на телефоне.

В основном в Туториалах работают с Cursor'om и managedQuery. Но они Deprecated.
Так создаю курсор:

Код: Выделить всё

[syntax=java]final String[] projection = new String[]{
				RawContacts.CONTACT_ID,	// the contact ID column
				RawContacts.DELETED		// column if this contact is deleted
		};
		
		final Cursor rawContacts = managedQuery(RawContacts.CONTENT_URI, // the URI for raw contact provider 
				projection, 
				null, // selection = null, retrieve all entries
				null, // selection is without parameters
				null); // do not order
[/syntax]
Но я так понял, что вся работа с курсором происходит в UI потоке, что плохо и медленно.

Прошу помочь разобраться с LoaderManager'ом.

Как, например при помощи него получить список всех контактов в телефоне ?

Заранее благодарен.

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: Работа с Контактами на телефоне.

Сообщение Elek » 24 апр 2013, 00:33

Возник вопрос, насчет работы с смс :).
Есть класc :

Код: Выделить всё

[syntax=java]
public class ContactEntity {
	
	private int contactId;
	private int phoneLookupID;	// Used to get available phone numbers
	private String contactName;
	private String contactPrimaryPhone;
}
[/syntax]
Геттеры и сеттеры убрал, чтоб не захламлять :) ,
В общем contactId в нем это ContactsContract.Contacts._ID,
PhoneLookupID это ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
сontactName это ContactsContract.Contacts.DISPLAY_NAME
и contactPrimaryPhone отсюда ContactsContract.CommonDataKinds.Phone.CONTENT_URI.

Хочу получить историю смсок, для этого класса.
Я слегка запутался как правильно искать и вообще правильно ли я это делаю.

Пытался получить историю таким методом :

Код: Выделить всё

[syntax=java]
private void SMSNumber(String phoneNumber) {
		Log.d(LOG_TAG, "IN SMSNumber");
		Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
		Cursor cursor1 = getContentResolver().query(
				mSmsinboxQueryUri,
				new String[] { "_id", "thread_id", "address", "person", "date",
						"body", "type" }, null, null, null);
		String[] columns = new String[] { "address", "person", "date", "body",
				"type" };
		if (cursor1.getCount() > 0) {
			String count = Integer.toString(cursor1.getCount());
			while (cursor1.moveToNext()) {
				if (address.equalsIgnoreCase(phoneNumber)) { // put your number
																// here
					String name = cursor1.getString(cursor1
							.getColumnIndex(columns[1]));
					String date = cursor1.getString(cursor1
							.getColumnIndex(columns[2]));
					String body = cursor1.getString(cursor1
							.getColumnIndex(columns[3]));
					String type = cursor1.getString(cursor1
							.getColumnIndex(columns[4]));
					
					Log.d(LOG_TAG, "date= " + date);
					Log.d(LOG_TAG, "name= " + name);
					Log.d(LOG_TAG, "body= " + body);
					Log.d(LOG_TAG, "type= " + type);

				}

			}
		}
		cursor1.close();
	}
[/syntax]
Но, я вижу только inbox, а мне надо получить весь диалог и входящие и исходящие от меня.
Куда копать дальше?

Помогите пожалуйста разобраться, как работать с смс и контактами.
Спасибо :).

Ответить