2013-09-18 3 views
1

Так что я хочу, чтобы у пользователя был возможность открыть список контактов Skype или телефона.Intent.createChooser как выбрать между двумя намерениями

if (isPackageExists("com.skype.raider")){ 

     PackageManager packageManager = getPackageManager(); 
     Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider"); 
     Intent contacts = new Intent(Intent.ACTION_VIEW, Contacts.CONTENT_URI); 


     Intent chooserIntent = Intent.createChooser(skype, "Talk"); 
     chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, contacts); 

     startActivity(chooserIntent);  } 

В ChooserIntent не отображается ни одно из намерений в списке.

Как сделать простой выбор для двух пользовательских намерений?

+0

Выбор не зависит от намерений, он выбирает между приложениями, которые могут обрабатывать намерение, которое вы пытаетесь отправить. –

+0

Так можно использовать методы intents для выбора между этими двумя намерениями? Мы можем показывать все приложения в списке выбора или фильтровать их. Похоже на серьезный недостаток, если эти механики не могут использоваться, чтобы показать собственный выбор намерений. Создание совершенно новой активности для выбора между двумя намерениями кажется излишним для этой задачи. – user2641518

+0

Я действительно не понимаю, что вы пытаетесь сделать здесь, вы создаете намерение начать скайп и запустить приложение «Контакты», по крайней мере, это то, что догадывается. что предположительно произойдет, если скайп установлен –

ответ

0

В ChooserIntent не отображается ни одно из намерений в списке.

Давайте оставим в стороне на минуту, что ваши предположения Skype (с помощью этого во веки веков имя пакета, во веки веков пусковой Intent является уместным в данном случае использования) есть проблемы.

Во-первых, вы не используете EXTRA_INITIAL_INTENTS правильно. The documentation states that it is an array of Intent objects, и вы не поставляете массив.

Во-вторых, я не понимаю, будет ли выборщик показывать EXTRA_INITIAL_INTENTS, если они не находятся в списке вещей, поддерживаемых базовым выбором Intent. В этом случае Skype не может быть в списке, возвращенном queryIntentActivities(new Intent(Intent.ACTION_VIEW, Contacts.CONTENT_URI)), и поэтому Skype обычно не будет выбором в выборе. Я никогда не пробовал использовать EXTRA_INITIAL_INTENTS, чтобы эффективно объединить другие полу-случайные объекты Intent («случайный» с точки зрения ОС больше, чем пользователь в этом случае) в список вариантов. Это может сработать, но я, конечно, не предполагал, что это так.

Я предположил, что это может быть сделано easilly

Несколько разработчиков будет рассмотреть возможность реализации диалогового окна или ListFragment из Intents для пользователя, чтобы выбрать из особенно сложных.

Я должен сделать новое всплывающее окно или активности для только получить пользователю выбрать, каким образом он хотел, чтобы сделать звонок

Это вполне возможно, если указанные исправления не работают для вас.

Смежные вопросы