I create an application with the ability to take a photo using the button. When I press the button, the message "Can't connect to Camera" pops up, tell me how to fix the code, so that the message would work?
package com.example.nn.gallery; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.util.Date; import java.io.File; import java.text.SimpleDateFormat; public class CallCamera extends AppCompatActivity { private Button takePictureButton; private ImageView imageView; private Uri file; //private static String imgPath = "/src/main"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_call_camera); takePictureButton = (Button) findViewById(R.id.photoBtn); imageView = (ImageView) findViewById(R.id.imageView); takePictureButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { takePicture(v); } }); if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { takePictureButton.setEnabled(false); ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == 0) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { takePictureButton.setEnabled(true); } } } public void takePicture(View view) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); file = Uri.fromFile(getOutputMediaFile()); intent.putExtra(MediaStore.EXTRA_OUTPUT, file); startActivityForResult(intent, 100); } private File getOutputMediaFile(){ //imgPath /** File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), "CameraDemo"); **/ File mediaStorageDir = new File(getApplicationFilePath(this.getApplicationContext())); //File mediaStorageDir = new File(imgPath); System.out.println(mediaStorageDir.getAbsolutePath()); if (!mediaStorageDir.exists()){ Log.d("CameraDemo", "directory don't exists"); if (!mediaStorageDir.mkdirs()){ Log.d("CameraDemo", "failed to create directory"); return null; } } String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); return new File(mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".jpg"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 100) { if (resultCode == RESULT_OK) { imageView.setImageURI(file); } } } public static String getApplicationFilePath(Context context) { final File filesDir = context.getFilesDir(); if (filesDir != null) { return filesDir.getAbsolutePath(); } // Log.w(ACRA.LOG_TAG, "Couldn't retrieve ApplicationFilePath for : " + context.getPackageName()); return "Couldn't retrieve ApplicationFilePath"; } } <uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.nn.gallery.CallCamera"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignRight="@+id/photoBtn" android:layout_alignEnd="@+id/photoBtn" android:layout_alignParentTop="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Photo" android:id="@+id/photoBtn" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> </RelativeLayout> 