Intent.getData () имеет значение null при попытке прочитать контактные данные на устройстве

1

Я пишу свое приложение, используя 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;
        }

    };
Теги:
debugging

1 ответ

1
Лучший ответ

Есть несколько возможностей.

Сначала попробуйте переключиться с People.CONTENT_URI на Contacts.CONTENT_URI. У меня не было проблемы с возвратом нулевого контакта. Вот образец проекта.

Во-вторых, убедитесь, что выбранный вами контакт - это тот, который находится на самом устройстве (по сравнению с ним, синхронизированным с Facebook, Exchange и т.д.). Старый API работает только с контактами на устройстве.

Если ничто из этого не помогает, может возникнуть ошибка с прошивкой на вашем устройстве. Мне было бы интересно узнать, в каком случае это устройство.

  • 0
    Я разрабатывал его с API 1.6 и только что решил использовать 2.0, так как контактные данные сильно изменились между двумя версиями. Как только я внес изменение и использовал Contact.CONTENT_URI, он работает так, как и ожидал. Не удалось заставить его работать в 1.6 с использованием Contacts.CONTENT_URI. Было сказано, что я не могу найти Activity. Спасибо за помощь, хотя, в конечном итоге это привело меня к решению.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню