Intent.createChooser如何在两个Intent之间进行选择

时间:2013-09-18 12:05:47

标签: android android-intent

所以我希望用户能够打开Skype或手机的联系人列表。

    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不会显示列表中的任何一个意图。

如何为两个自定义意图制作简单的选择器?

1 个答案:

答案 0 :(得分:0)

  

chooserIntent不会显示列表中的任何一个意图。

让我们暂时搁置你的Skype假设(永远使用这个软件包名称,永远是发射器Intent在这个用例中是合适的)这一时刻有问题。

首先,您没有正确使用EXTRA_INITIAL_INTENTSThe 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对象(从操作系统的角度来看,“随机”比在这种情况下的用户更多)连接到选项列表上。它可能有效,但我当然不会认为它确实如此。

  

我认为这可以轻松完成

很少有开发人员会考虑实施一个对话框或ListFragment Intents,以供用户选择,使其变得特别复杂。

  

我必须制作新的弹出窗口或活动,以便让用户选择他喜欢拨打电话的方式

如果前面提到的修复不适合你,那完全有可能。