Я использую эмулятор с Android 5.1.1 и устройство Sony с той же версией ОС. Код, используемый (источник: developer.android.com):Вставка контактов работает на эмуляторе, но не на физическом устройстве (Sony Xperia C6603)
import android.content.ContentUris;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import static android.R.attr.accountType;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContentValues values = new ContentValues();
values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType);
values.put(ContactsContract.RawContacts.ACCOUNT_NAME, "hello");
Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "Mike Sullivan");
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
}
}
манифеста содержит оба READ_CONTACTS and WRITE_CONTACTS
разрешения
код хорошо работает в эмуляторе, но на Sony устройства контакт не отображается. Не существует никаких исключений или ничего, и фильтр установлен для отображения всех контактов (локальный, google и т. Д.). Я нашел аналогичную тему, когда кто-то заявил о проблеме ContactContracts с устройством Sony, но он, по крайней мере, мог видеть имя, я ничего не вижу.