【发布时间】:2019-06-30 09:40:15
【问题描述】:
我不能用相机拍照,它没有保存在外部目录中,也没有显示在 imageView 中。
在activity_main:有拍照按钮,imageView显示图片。
在AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
class MainActivity{
private Uri mImgFileUri;
void onCreate(){ ...
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
imageCapture();
}
});
}
private void imageCapture() {
File extDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File myPicDir = new File(extDir.getAbsolutePath()+"/MyPictures");
if(!myPicDir.exists()){
myPicDir.mkdirs();
}
Date dt = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyMMdd-HHmmss");
String fileName = dateFormat.format(dt)+".jpg";
File imgFile = new File(myPicDir+"/"+fileName);
mImgFileUri = Uri.fromFile(imgFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,mImgFileUri);
startActivityForResult(intent,555);
}
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == 555 && resultCode == RESULT_OK){
String path = mImgFileUri.getPath();
Bitmap bitmap = BitmapFactory.decodeFile(path);
ImageView imageView = (ImageView)findViewById(R.id.imageView);
imageView.setImageBitmap(bitmap);
}
}
}
遇到这个错误
Error :
Process: com.example.cameraimagecapture, PID: 22554
android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/MyPictures/20190630-165910.jpg exposed beyond app through ClipData.Item.getUri()
...MainActivity.imageCapture(MainActivity.java:57) >> startActivityForResult(intent,555);
...MainActivity.access$000(MainActivity.java:23) >> class MainActivity extends AppCompatActivity {}
...MainActivity$1.onClick(MainActivity.java:36) >> imageCapture();
【问题讨论】:
-
我刚刚编辑了我的代码以获得精确的语言。希望我的回答对你有用。
-
如果我的回答对你有用,你能不能。你接受我的回答为真吗?
标签: java android imageview android-camera android-external-storage