Я пишу свое приложение, используя api 1.6. Код отлично работает на эмуляторах 1.6-2.2.
Но когда я пытаюсь отладить его на моем устройстве, которое работает 2.1 data.getData()
, возвращает null. У меня это есть в AndroidManifest.xml <uses-permission android:name="android.permission.READ_CONTACTS"/>
У кого-нибудь есть мысли. Я новичок в android, спасибо.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnTest = (Button) findViewById(R.id.btnTest);
btnTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
startActivityForResult(intent, ACTIVITY_PICK_CONTACT);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case (ACTIVITY_PICK_CONTACT):
if (resultCode == Activity.RESULT_OK) {
// This is where it is broke
Uri uri = data.getData();
Intent intent = new Intent(this, PickContactInfo.class);
intent.putExtra(Keys.CONTACT_URI, uri.toString());
startActivity(intent);
}
break;
}
};
Есть несколько возможностей.
Сначала попробуйте переключиться с People.CONTENT_URI
на Contacts.CONTENT_URI
. У меня не было проблемы с возвратом нулевого контакта. Вот образец проекта.
Во-вторых, убедитесь, что выбранный вами контакт - это тот, который находится на самом устройстве (по сравнению с ним, синхронизированным с Facebook, Exchange и т.д.). Старый API работает только с контактами на устройстве.
Если ничто из этого не помогает, может возникнуть ошибка с прошивкой на вашем устройстве. Мне было бы интересно узнать, в каком случае это устройство.