私は現在、モバイルの連絡先にアクセスしたいプロジェクトに取り組んでいるので、なんとかアカウントを作成し、操作accountmanager
も実行できましたSyncadapter
。モバイルでアカウントが作成されたことを確認できましたsettings->Accounts
。ただし、以下のコードを使用して自分のアカウントですべての連絡先を取得しようとすると、機能しません。アプリ アカウントの連絡先を除くすべてのアプリ (google.com および WhatsApp.com) の連絡先が表示されます。
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