XML file 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/gallery"
android:text="Open Gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/camera"
android:text="Open Camera"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

</LinearLayout>
MaintAcitivity 
public class MainActivity extends AppCompatActivity {
Button gallery;
ImageView imageView;
Button camera;
private static final int CAMERA_REQUEST = 1888;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gallery = findViewById(R.id.gallery);
imageView = findViewById(R.id.imageview);
camera = findViewById(R.id.camera);
gallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select image"), 100);

}
});
camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//permission not grant already
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA)
+ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS)
+ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, CAMERA)
|| ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,READ_CONTACTS)
|| ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,READ_EXTERNAL_STORAGE))
{
}else{
ActivityCompat.requestPermissions(MainActivity.this,new String[]{CAMERA,READ_CONTACTS,READ_EXTERNAL_STORAGE
},CAMERA_REQUEST);
}
}else {
// if the permission granted already
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
Toast.makeText(MainActivity.this,"Permission Already Created",Toast.LENGTH_LONG).show();
}

}

});
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==CAMERA_REQUEST){
if (grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED ){
Toast.makeText(MainActivity.this,"Permission Grandted",Toast.LENGTH_LONG).show();
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
}else {
Toast.makeText(MainActivity.this,"Permission not Grandted",Toast.LENGTH_LONG).show();
}
}
}
}

Manifiest File used in android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ansari.gcopen">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.GCopen">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>