Android Intent setSelector

时间:2014-11-21 09:27:52

标签: android android-intent

为什么当我使用setSelector方法时,它既不返回Camera活动也不返回Gallery Activities。我有以下代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent camera= new Intent("android.media.action.IMAGE_CAPTURE");

    Intent gallery = new Intent();  
    gallery.setAction(android.content.Intent.ACTION_VIEW);  
    gallery.setType("image/*");
    gallery.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    camera.setSelector(gallery);

    startActivity(camera);
}

根据Android的参考API&#34; 如果选择器已设置,则在尝试查找可以处理Intent的实体时将使用它,而不是Intent的主要内容。< / EM>&#34;

我以为我会得到一个对话框,打开画廊而不是相机。但是,我得到了一个对话框,返回任意应用程序/活动,例如呼叫设置网络设置 SIM工具包等。

当我删除camera.setSelector(gallery);方法时,一切都像魅力一样,但当我使用camera.setSelector(gallery);方法时,它既不返回相机活动也不返回图库活动。
有人可以解释一下我为什么要对这些任意活动进行对话而不是适当的对话?

我不想删除camera.setSelector(gallery);,因为我想了解它是如何运作的!

2 个答案:

答案 0 :(得分:0)

替换此代码:

Intent camera= new Intent("android.media.action.IMAGE_CAPTURE");

有了这个:

Intent camera= new Intent(Intent.ACTION_VIEW,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

答案 1 :(得分:0)

使用此意图打开您的图库

Intent pickPhoto = new Intent(Intent.ACTION_PICK,
                       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

然后使用startActivityForResult从图库中获取所选照片。希望这有帮助