una studio ruta programacion obtener mostrar imagen desde cargar android uri

studio - cómo obtener un uri de un recurso de imagen en Android



obtener la ruta de una imagen android studio (5)

Necesito abrir una intención para ver una imagen de la siguiente manera:

Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.parse("@drawable/sample_1.jpg"); intent.setData(uri); startActivity(intent);

El problema es que Uri uri = Uri.parse("@drawable/sample_1.jpg"); Es incorrecto.


Aquí hay una solución limpia que aprovecha al android.net.Uri clase android.net.Uri través de su patrón Builder , evitando la composición repetida y la descomposición de la cadena URI, sin depender de cadenas codificadas ni ideas ad hoc sobre la sintaxis URI.

Resources resources = context.getResources(); Uri uri = new Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(resources.getResourcePackageName(resourceId)) .appendPath(resources.getResourceTypeName(resourceId)) .appendPath(resources.getResourceEntryName(resourceId)) .build();


Desea el URI del recurso de imagen y R.drawable.goomb es un recurso de imagen. La función de generador crea el URI que está solicitando:

String resourceScheme = "res"; Uri uri = new Uri.Builder() .scheme(resourceScheme) .path(String.valueOf(intResourceId)) .build();


El formato es:

"android.resource://[package]/[res id]"

[paquete] es tu nombre de paquete

[res id] es el valor de la identificación del recurso, por ej. R.drawable.sample_1

para unirlo, usa

Uri path = Uri.parse("android.resource://your.package.name/" + R.drawable.sample_1);


Para aquellos que tienen un error, puede estar ingresando el nombre del paquete equivocado. Solo usa este método.

public static Uri resIdToUri(Context context, int resId) { return Uri.parse(Consts.ANDROID_RESOURCE + context.getPackageName() + Consts.FORESLASH + resId); }

Dónde

public static final String ANDROID_RESOURCE = "android.resource://"; public static final String FORESLASH = "/";


public static Uri resourceToUri(Context context, int resID) { return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.getResources().getResourcePackageName(resID) + ''/'' + context.getResources().getResourceTypeName(resID) + ''/'' + context.getResources().getResourceEntryName(resID) ); }