Skip to content

Instantly share code, notes, and snippets.

@Zaniyar
Created May 29, 2017 20:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zaniyar/aac82363831894e465ee99895b10210d to your computer and use it in GitHub Desktop.
Save Zaniyar/aac82363831894e465ee99895b10210d to your computer and use it in GitHub Desktop.
photoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setVisibility(View.INVISIBLE);
if ((ContextCompat.checkSelfPermission(CampaignDetail.this,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
|| (ContextCompat.checkSelfPermission(CampaignDetail.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED))
{
ActivityCompat.requestPermissions
(CampaignDetail.this, new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, MY_PERMISSIONS_REQUEST_READ_AND_WRITE_EXTERNAL_STORAGE);
}
//All reading/writing stuff is implemented in this method
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
File pictureDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String pictureName = getPictureName();
File imageFile = new File(pictureDirectory, pictureName);
//pictureUri = Uri.fromFile(imageFile);
//pictureUri = Uri.fromFile(imageFile);
pictureUri = FileProvider.getUriForFile(getApplication(), getApplicationContext().getPackageName() + ".provider", imageFile);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
ClipData clip =
ClipData.newUri(getContentResolver(), "A photo", pictureUri);
takePictureIntent.setClipData(clip);
takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
} else {
List<ResolveInfo> resInfoList =
getPackageManager()
.queryIntentActivities(takePictureIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
grantUriPermission(packageName, pictureUri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
}
takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, pictureUri);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_IMAGE_CAPTURE) {
//Here you can get the thumbnail! - but you can't get thumbnail + foto at same time!
// Bundle extras = data.getExtras();
// Bitmap imageBitmap = (Bitmap) extras.get("data");
// imageView.setImageBitmap(imageBitmap);
try {
Bitmap imageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(String.valueOf(pictureUri)));
imageView.setImageBitmap(imageBitmap);
//set uploadBtn visible:
uploadBtn.setVisibility(View.VISIBLE);
} catch (Exception e) {
Log.d("Ex", e.toString());
//handle exception
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment