import
android.Manifest;
import
android.app.AlertDialog;
import
android.content.DialogInterface;
import
android.content.Intent;
import
android.content.pm.PackageManager;
import
android.net.Uri;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.ImageView;
import
android.widget.TextView;
import
android.widget.Toast;
import
androidx.annotation.NonNull;
import
androidx.annotation.Nullable;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.core.content.ContextCompat;
import
com.squareup.picasso.Picasso;
import
com.theartofdev.edmodo.cropper.CropImage;
public
class
MainActivity
extends
AppCompatActivity {
ImageView userpic;
private
static
final
int
GalleryPick =
1
;
private
static
final
int
CAMERA_REQUEST =
100
;
private
static
final
int
STORAGE_REQUEST =
200
;
private
static
final
int
IMAGEPICK_GALLERY_REQUEST =
300
;
private
static
final
int
IMAGE_PICKCAMERA_REQUEST =
400
;
String cameraPermission[];
String storagePermission[];
Uri imageuri;
TextView click;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
click = findViewById(R.id.click);
userpic = findViewById(R.id.set_profile_image);
cameraPermission =
new
String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
storagePermission =
new
String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
click.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View view) {
showImagePicDialog();
}
});
}
private
void
showImagePicDialog() {
String options[] = {
"Camera"
,
"Gallery"
};
AlertDialog.Builder builder =
new
AlertDialog.Builder(
this
);
builder.setTitle(
"Pick Image From"
);
builder.setItems(options,
new
DialogInterface.OnClickListener() {
@Override
public
void
onClick(DialogInterface dialog,
int
which) {
if
(which ==
0
) {
if
(!checkCameraPermission()) {
requestCameraPermission();
}
else
{
pickFromGallery();
}
}
else
if
(which ==
1
) {
if
(!checkStoragePermission()) {
requestStoragePermission();
}
else
{
pickFromGallery();
}
}
}
});
builder.create().show();
}
private
Boolean checkStoragePermission() {
boolean
result = ContextCompat.checkSelfPermission(
this
, Manifest.permission.WRITE_EXTERNAL_STORAGE) == (PackageManager.PERMISSION_GRANTED);
return
result;
}
private
void
requestStoragePermission() {
requestPermissions(storagePermission, STORAGE_REQUEST);
}
private
Boolean checkCameraPermission() {
boolean
result = ContextCompat.checkSelfPermission(
this
, Manifest.permission.CAMERA) == (PackageManager.PERMISSION_GRANTED);
boolean
result1 = ContextCompat.checkSelfPermission(
this
, Manifest.permission.WRITE_EXTERNAL_STORAGE) == (PackageManager.PERMISSION_GRANTED);
return
result && result1;
}
private
void
requestCameraPermission() {
requestPermissions(cameraPermission, CAMERA_REQUEST);
}
@Override
public
void
onRequestPermissionsResult(
int
requestCode,
@NonNull
String[] permissions,
@NonNull
int
[] grantResults) {
switch
(requestCode) {
case
CAMERA_REQUEST: {
if
(grantResults.length >
0
) {
boolean
camera_accepted = grantResults[
0
] == PackageManager.PERMISSION_GRANTED;
boolean
writeStorageaccepted = grantResults[
1
] == PackageManager.PERMISSION_GRANTED;
if
(camera_accepted && writeStorageaccepted) {
pickFromGallery();
}
else
{
Toast.makeText(
this
,
"Please Enable Camera and Storage Permissions"
, Toast.LENGTH_LONG).show();
}
}
}
break
;
case
STORAGE_REQUEST: {
if
(grantResults.length >
0
) {
boolean
writeStorageaccepted = grantResults[
0
] == PackageManager.PERMISSION_GRANTED;
if
(writeStorageaccepted) {
pickFromGallery();
}
else
{
Toast.makeText(
this
,
"Please Enable Storage Permissions"
, Toast.LENGTH_LONG).show();
}
}
}
break
;
}
}
private
void
pickFromGallery() {
CropImage.activity().start(MainActivity.
this
);
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
@Nullable
Intent data) {
super
.onActivityResult(requestCode, resultCode, data);
if
(requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if
(resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
Picasso.with(
this
).load(resultUri).into(userpic);
}
}
}
}