0

我被写来运行简单的 android 相机应用程序以在 android 4 上运行它。

该代码最初将相机意图定义为

Intent cameraIntent = new Intent();
cameraIntent.setType(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

当我尝试运行此应用程序时,它抛出异常:-

07-07 12:44:09.755: E/AndroidRuntime(11533): android.content.ActivityNotFoundException: 没有找到处理 Intent { typ=android.media.action.IMAGE_CAPTURE } 的活动

但是,当我尝试通过如下定义“cameraIntent”来运行相同的程序时,它运行良好 -

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

我认为通过 setter 或通过构造函数将“动作”传递给意图是相同的。

但似乎并非如此,因为通过 setter 方法传递“动作”会引发异常,而通过构造函数将其传递给 new Intent 工作正常。知道为什么吗?

4

1 回答 1

1

此代码工作正常:

Intent cameraIntent = new Intent();
cameraIntent.setAction(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

代替

Intent cameraIntent = new Intent();
cameraIntent.setType(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

因为

setType(String type)用于:

设置显式 MIME 数据类型。

setAction(String action)用于:

设置要执行的一般操作。

于 2012-07-07T12:07:02.817 回答