В настоящее время я работаю над проектом, в котором я хочу получить доступ к мобильным контактам. Поэтому мне удалось создать учетную запись с accountmanager
, а также выполнить Syncadapter
. Я мог видеть, что моя учетная запись была создана на мобильном устройстве settings->Accounts
. Однако, когда я пытаюсь получить все контакты с моей учетной записью с помощью кода ниже, это не сработает. Он показывает все приложения (google.com и WhatsApp.com), кроме контактов с моими учетными записями.Нет контактов для учетной записи AccountManager
Cursor cursor = getContext().getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI,
new String[]{ContactsContract.RawContacts.DIRTY, ContactsContract.RawContacts.ACCOUNT_TYPE},
null,
null,
null);
if (cursor != null && cursor.getCount() >0) {
cursor.moveToFirst();
while(!cursor.isAfterLast()) {
Log.d("Dirty",cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.DIRTY)));
Log.d("ACCountType",cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_TYPE)));
cursor.moveToNext();
}
cursor.close();
}
То, что я не понимаю, как мне нужно, чтобы создать ContentProvider
и вставить все контакты обратно Contactsprovider
от имени моего счета?
Благодарим вас за ценное объяснение. В моем приложении я не создаю никаких действий, чтобы позволить пользователю вставлять контакт вручную, что означает, что когда мое приложение устанавливается первым, мое приложение должно читать все существующие контакты и повторно вставлять (с CALLER_IS_SYNC_ADAPTER) в таблицу rawcontacts на bahalf моей учетной записи , то я должен иметь возможность обнаруживать изменения и синхронизацию с сервером. Правильно ли я поступаю? – Naroju
Зависит от того, что вы пытаетесь достичь. То, что вы описали, создаст копию каждого контакта. Проблема в том, что исходный контакт и ваша копия в конечном итоге не синхронизируются. Я предполагал, что вы создаете обычное приложение с двусторонней синхронизацией (в этом случае вам нужно вставлять контакты, даже без пользовательского интерфейса). – Marten
Я предполагал, что вы создаете обычное приложение с двусторонней синхронизацией (в этом случае вам нужно вставлять контакты, даже без пользовательского интерфейса). Но это похоже на то, что вы планируете синхронизировать одностороннюю синхронизацию с устройством до вашего обслуживания, в основном соскабливая контакты. Это не поддерживается концепцией SyncAdapter. – Marten