Cara mendapatkan data jalur dari gambar di galeri dengan menggunakan Content Resolver

Saya sudah berhasil mendapatkan gambar dari galeri tetapi saya tidak dapat mengunggah gambar ke server karena file tersebut null. apakah ada kode yang ingin saya tambahkan? saya menambahkan imageView.getPath, tetapi saya hanya mendapatkan jalur dari gambar kamera ke server, dan mendapatkan gambar nol dari galeri.

saya mendapatkan jalur ini, content://com.android.providers.media.documents/document/image%3A5755 tetapi masih tidak dapat mengunggah ke server

private void getImageFromGallery(Intent data) {

    mSelectedImgURI = data.getData();

    mimeType = getImageExt(mSelectedImgURI);
    uploadDialog.dismiss();

    imgCategory.setImageURI(mSelectedImgURI);
}

private void getImageFromCamera(Intent data) {

    Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

    String tempFileName = System.currentTimeMillis() + ".jpg";
    File destination = new File(Environment.getExternalStorageDirectory(),tempFileName);
    FileOutputStream fo;

    try {

        destination.createNewFile();
        fo = new FileOutputStream(destination);
        fo.write(bytes.toByteArray());
        fo.close();

        mSelectedImgURI = Uri.fromFile(destination);
        uploadDialog.dismiss();
        imgCategory.setImageBitmap(thumbnail);

    } catch (IOException e) {
        Log.d(TAG, "Internal error - " + e.getLocalizedMessage());
    }
}

public String getImageExt(Uri uri){
    ContentResolver contentResolver = getApplicationContext().getContentResolver();
    MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
    return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));
}

person Much    schedule 22.10.2018    source sumber
comment
Kemungkinan duplikat Memilih file gambar dari Galeri menggunakan FileProvider   -  person Sagar Zala    schedule 22.10.2018


Jawaban (1)


Ini adalah metode yang biasa saya gunakan

 public String getRealPathFromURI(Uri uri) {
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    cursor.moveToFirst();
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
    return cursor.getString(idx);
}

Ini mengembalikan lokasi file dan Anda bisa mendapatkan file dengan menelepon

File realFile = new File(getRealPathFromURI(mSelectedImgUri));
person Lucem    schedule 22.10.2018
comment
Jawaban ini harusnya dengan banyak like, BERHASIL - person guisantogui; 15.10.2019