一、开发过程中遇到的两个问题
1.
解决办法:https://blog.csdn.net/weixin_45138601/article/details/116936272
2.
解决办法:https://blog.csdn.net/weixin_45138601/article/details/116936474
二、全部代码
//activity代码 private File file = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } public void toView(View view) { initPhotoError(); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (intent.resolveActivity(getPackageManager()) != null) { File dir = new File(Environment.getExternalStorageDirectory(),"Pictures"); if(dir.exists()){ dir.mkdirs(); } file = new File(dir,System.currentTimeMillis() + ".jpg"); if(!file.exists()){ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); startActivityForResult(intent, 1); } } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 && resultCode == RESULT_OK) { Log.e("cc", "成功"); ImageView imageView = findViewById(R.id.photo); imageView.setImageURI(Uri.fromFile(file));; } } private void initPhotoError(){ StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); builder.detectFileUriExposure(); }
布局文件中添加一个Button和一个ImageView
<Button android:onClick="toView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拍照" /> <ImageView android:id="@+id/photo" android:layout_width="wrap_content" android:layout_height="wrap_content" />