Android получить путь к изображению из строки в виде строки
Есть ли способ, которым я могу получить путь к образцу из выделенной папки в android как String. Мне нужно это, потому что я реализую свой собственный поток, где я показываю изображения, используя их путь на SD-карте, но я хочу показать изображение по умолчанию, когда изображение не отображается.
Любые идеи, как это сделать?
Ответы
Ответ 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
}