2014-11-21 43 views
0

为什么当我使用setSelector方法返回既不是相机的活动,也没有画廊Activities.I有以下代码:Android的意图setSelector

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“如果选择设置,这将是当试图找到可以处理意图的实体时使用,而不是意图的主要内容。

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

当我删除了camera.setSelector(gallery);方法的一切就像一个魅力,但是当我使用camera.setSelector(gallery);方法时,它既不返回Camera活动也不返回Gallery活动。
有人可以解释为什么我会与这些任意活动进行对话而不是恰当的吗?

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

+0

您的要求是什么?你想打开选择器对话框显示选项来选择图像吗? – 2014-11-21 09:47:18

+0

如果我删除setSelector方法的每一个意图,它应该像它应该那样工作。为什么当我使用setSelector方法时,它既不返回Camera活动,也不返回Gallery活动。正如我所说的,我希望有人向我解释为什么我有任意活动作为响应相机意图的选项。 – LiTTle 2014-11-21 09:54:09

回答

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); 
+0

我真的很感谢你花时间来帮助我。但是,也许,我想要什么,它不能用代码解释。我试图理解当我使用setSelector方法时出现这些任意活动而不是合适的原因。 – LiTTle 2014-11-21 10:12:31

0

使用这种意图打开您的画廊

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

然后使用startActivityForResult摆脱画廊选择的照片。希望这可以帮助

+0

我想了解出现这些任意活动而不是恰当的原因。 – LiTTle 2014-11-21 09:55:46