Я пытаюсь получить изображение с камеры и установить его в режим просмотра изображений и сохранить в галерее, изображение успешно захвачено, но изображение не отображается в режиме просмотра изображений и не сохраняется в галерее.Я не знаю, в чем проблема.
Многие посты здесь я пробовал, но до сих пор не решил мою проблему.
Это мой код
Определение:
android.support.v7.widget.Toolbar toolbar;
private String id_sales, pilihanUploadPp, imagePath;
private EditText namaEdt, usernameEdt, notelpEdt, emailEdt;
private ProgressDialog progress;
private CompositeDisposable disposables = new CompositeDisposable();
private SessionManager sessionManager;
private int CAMERA_PERM_CODE = 1;
private static final int IMG_REQUEST1 = 100, IMG_REQUEST2 = 200;
private ImageView pp_img;
Метод onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ubah_profil);
sessionManager = new SessionManager(this);
namaEdt = findViewById(R.id.nama_edit_edt);
usernameEdt = findViewById(R.id.username_edit_edt);
notelpEdt = findViewById(R.id.telp_edit_edt);
emailEdt = findViewById(R.id.email_edit_edt);
pp_img = findViewById( R.id.pp_edit_iv );
Button ubahBtn = findViewById(R.id.ubah_edit_btn);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Objects.requireNonNull( getSupportActionBar() ).setTitle("Ubah Profil");
ActionBar actionbar = getSupportActionBar();
assert actionbar != null;
actionbar.setDisplayHomeAsUpEnabled(true);
getIntentDataFromFragmentProfil();
ubahBtn.setOnClickListener(this);
pp_img.setOnClickListener( this );
}
Метод onClick:
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.ubah_edit_btn:
updateProfil();
break;
case R.id.pp_edit_iv:
selectImage();
break;
}
}
Метод selectImage:
private void selectImage() {
final CharSequence[] items = {"Kamera", "Galeri", "Batal"};
AlertDialog.Builder builder = new AlertDialog.Builder( UbahProfilActivity.this );
builder.setTitle( "Ubah Foto Profil" );
builder.setItems( items , (dialog , which) -> {
if (items[which].equals( "Kamera" )){
pilihanUploadPp = "Kamera";
if (ContextCompat.checkSelfPermission( UbahProfilActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED){
cameraIntent();
} else {
reqCameraPerms();
}
}
} );
builder.show();
}
cameraIntent метод:
private void cameraIntent(){
Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE );
if (intent.resolveActivity( getPackageManager()) != null){
File photoFile = null;
try{
photoFile = createImageFile();
} catch (IOException ioex){
Toast.makeText( this , "Error: "+ioex , Toast.LENGTH_SHORT ).show();
}
if (photoFile!=null){
Uri outputFileUri = FileProvider.getUriForFile( this , "com.example.bismillah.newsahabatauto2000.Activity.provider" , photoFile );
intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult( intent, IMG_REQUEST1 );
}
}
}
метод createImageFile:
private File createImageFile() throws IOException {
String timeStamp =
new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
String imageFileName = "IMG_" + timeStamp + "_";
File storageDir =
getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
imagePath = image.getAbsolutePath();
return image;
}
и, наконец, метод onActivityResult:
@Override
protected void onActivityResult(int requestCode , int resultCode , Intent data) {
super.onActivityResult( requestCode , resultCode , data );
try{
if (requestCode==IMG_REQUEST1 && resultCode==RESULT_OK){
if (data !=null && data.getExtras() !=null){
Bitmap imageBitmap = (Bitmap) data.getExtras().get( "data" );
pp_img.setImageBitmap( imageBitmap );
}
}
}catch (Exception e){
Toast.makeText( this , "Error: "+e , Toast.LENGTH_SHORT ).show();
}
}