启动默认相机应用程序(不返回)
Posted
技术标签:
【中文标题】启动默认相机应用程序(不返回)【英文标题】:Launch default camera app (no return) 【发布时间】:2013-09-07 02:37:35 【问题描述】:我想启动默认相机,但希望它的行为就像从启动器启动一样(即,相机应用程序应将生成的图片存储到用户的图库,而不是返回到我的应用程序) .如果我使用Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
,相机应用程序使用“OK?重试?”-UI 并且不保存图片。我宁愿不使用“直接”com.android.camera
意图,因为很多设备都使用自定义相机应用程序。我已经看到 stock gallery3d-app 使用实现 com.android.camera/.Camera
的别名,但我不确定每个预加载的制造商相机应用程序都会这样做。
【问题讨论】:
【参考方案1】:这段代码可以解决问题:
Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
context.startActivity(intent);
【讨论】:
此意图似乎优于 MediaStore.ACTION_IMAGE_CAPTURE,因为前者以照片专用模式打开某些相机应用程序,不允许用户切换到视频。 MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA 似乎没有受到同样的限制。【参考方案2】:我现在是这样实现的:
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
try
PackageManager pm = mContext.getPackageManager();
final ResolveInfo mInfo = pm.resolveActivity(i, 0);
Intent intent = new Intent();
intent.setComponent(new ComponentName(mInfo.activityInfo.packageName, mInfo.activityInfo.name));
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(intent);
catch (Exception e)
Log.i(TAG, "Unable to launch camera: " + e);
【讨论】:
注意,您可以将Intent.ACTION_MAIN
替换为MediaStore.ACTION_IMAGE_CAPTURE
,让应用程序以拍照模式启动,或者MediaStore.ACTION_VIDEO_CAPTURE
让应用程序以视频模式启动.
如果您从后台服务执行此操作,则需要添加 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这个答案不起作用!它会打开通讯录、Youtube 和其他不相关的应用程序。以上是关于启动默认相机应用程序(不返回)的主要内容,如果未能解决你的问题,请参考以下文章
带摄像头的 iPhone UIImagepicker 像默认摄像头应用一样显示相机胶卷缩略图?