启动默认相机应用程序(不返回)

Nic*_*ick 11 android android-camera android-camera-intent

我想启动默认摄像头,但希望它像从启动器启动一样(即生成的图片应该由相机应用程序存储到用户的图库,而不是返回到我的应用程序).如果我使用Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);,相机应用程序使用"确定?重试?" - 用户界面并不保存图片.我宁愿不使用"直接" com.android.camera意图,因为很多设备都使用自定义相机应用程序.我已经看到库存gallery3d-app使用别名实现com.android.camera/.Camera,但我不确定每个预先加载的制造商相机应用程序是否这样做.

Nic*_*ick 13

我现在已经实现了这样:

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); 
}
Run Code Online (Sandbox Code Playgroud)

  • 注意,您可以换出`Intent.ACTION_MAIN`并将操作替换为'MediaStore.ACTION_IMAGE_CAPTURE`以使应用程序以拍照模式启动,或者将"MediaStore.ACTION_VIDEO_CAPTURE"替换为让应用程序以视频拍摄模式启动. (2认同)
  • 这个答案不起作用!它会打开Contacts,Youtube和其他不相关的应用程序. (2认同)

ACh*_*hep 12

这段代码可以解决问题:

Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)