我正在尝试使用内置的Android相机拍照。我一直在学习如何捕捉图像的教程,但它只讲授如何捕捉图片并将其存储到SD卡上。目前,只要尝试使用代码进行内部存储,应用程序就会崩溃。下面是我所拥有的代码的一部分,我不知道如何更改以便为内部存储工作。
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_image = ( ImageView ) findViewById( R.id.image );
_field = ( TextView ) findViewById( R.id.field );
_button = ( Button ) findViewById( R.id.button );
_button.setOnClickListener( new ButtonClickHandler() );
_path = Environment.getExternalStorageDirectory() + "/images/make_machine_example.jpg";
}
protected void startCameraActivity()
{
File file = new File( _path );
Uri outputFileUri = Uri.fromFile( file );
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult( intent, 0 );
}
答案 0 :(得分:3)
您不能为第三方应用提供应用内部存储的路径,并希望其他应用能够使用它,因为其他应用没有读取或写入权限来处理您的内部存储
简单的解决方案是为图片使用外部存储,然后将其复制到内部存储上的所需位置,在复制完成后删除外部存储上的原件。
可能它可能正常工作的解决方案是使用安全的FileProvider
来访问您的内部存储设备到相机应用程序。这肯定适用于允许其他应用程序读取您的内部存储空间,FileProvider
似乎支持写入操作,但我从未尝试过写入操作,更不用说使用相机应用程序了。
它的工作 - 但是 - 它是一个很多工作的解决方案是使用android.hardware.Camera
和/或android.hardware.camera2
自己拍照,而不是调用第三方应用程序。
答案 1 :(得分:1)
目前,您的应用程序无法存储在外部存储设备(getExternalStorageDirectory())中,而外部存储设备主要不是可移动的micro SD卡。除了可移动和外部存储器,Android设备也有内部存储器。要让camara app将图片放到您的私人内部存储中,您可以提供内容提供者。