Подтвердить что ты не робот

Android получить путь к изображению из строки в виде строки

Есть ли способ, которым я могу получить путь к образцу из выделенной папки в android как String. Мне нужно это, потому что я реализую свой собственный поток, где я показываю изображения, используя их путь на SD-карте, но я хочу показать изображение по умолчанию, когда изображение не отображается.

Любые идеи, как это сделать?

4b9b3361

Ответ 1

Все эти способы:

String imageUri = "drawable://" + R.drawable.image;

Другие способы тестирования

Uri path = Uri.parse("android.resource://com.segf4ult.test/" + R.drawable.icon);
Uri otherPath = Uri.parse("android.resource://com.segf4ult.test/drawable/icon");

String path = path.toString();
String path = otherPath .toString();

Ответ 2

основываясь на некоторых из приведенных выше ответов, я немного импровизировал

создайте этот метод и вызовите его, передав свой ресурс

Многоразовый метод

public String getURLForResource (int resourceId) {
    //use BuildConfig.APPLICATION_ID instead of R.class.getPackage().getName() if both are not same
    return Uri.parse("android.resource://"+R.class.getPackage().getName()+"/" +resourceId).toString();
}

Пример звонка

getURLForResource(R.drawable.personIcon)

завершить пример загрузки изображения

String imageUrl = getURLForResource(R.drawable.personIcon);
// Load image
 Glide.with(patientProfileImageView.getContext())
          .load(imageUrl)
          .into(patientProfileImageView);

вы можете переместить функцию getURLForResource в файл Util и сделать ее статической, чтобы ее можно было повторно использовать

Ответ 3

Если вы планируете получать изображение со своего пути, лучше использовать Assets вместо того, чтобы пытаться выяснить путь к папке с возможностью рисования.

    InputStream stream = getAssets().open("image.png");
    Drawable d = Drawable.createFromStream(stream, null);

Ответ 4

Я думаю, что вы не можете получить его как String но вы можете получить его как int, получив id ресурса:

int resId = this.getResources().getIdentifier("imageNameHere", "drawable", this.getPackageName());

Ответ 5

Таким образом вы можете перейти к определенному изображению в вашей папке drawable. Получите ресурсы, а затем укажите изображение, к которому вы хотите получить доступ:

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);

Для получения дополнительной информации см. Ресурсы для рисования.

Ответ 6

Сначала проверьте, существует ли файл в SDCard. Если файл не существует в SD-карте, вы можете установить изображение с помощью метода setImageResource() и передать изображение по умолчанию из выпадающей папки

Пример кода

File imageFile = new File(absolutepathOfImage);//absolutepathOfImage is absolute path of image including its name
        if(!imageFile.exists()){//file doesnot exist in SDCard

        imageview.setImageResource(R.drawable.defaultImage);//set default image from drawable folder
        }