다음과 같이 이미지를 보려면 인 텐트를 열어야합니다.
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("@drawable/sample_1.jpg");
intent.setData(uri);
startActivity(intent);
문제는 그것이 Uri uri = Uri.parse("@drawable/sample_1.jpg");
틀렸다는 것입니다.
답변
형식은 다음과 같습니다.
"android.resource://[package]/[res id]"
[패키지]는 패키지 이름입니다.
[res id]는 리소스 ID의 값입니다 ( 예 : R.drawable.sample_1).
함께 꿰매려면
Uri path = Uri.parse("android.resource://your.package.name/" + R.drawable.sample_1);
답변
다음은 하드 코딩 된 문자열이나 URI 구문에 대한 임시 아이디어에 의존하지 않고 URI 문자열의 반복적 인 구성 및 분해를 피하면서 패턴을 android.net.Uri
통해 클래스를 완전히 활용하는 깨끗한 솔루션입니다 Builder
.
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();
답변
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) );
}
답변
오류가있는 경우 잘못된 패키지 이름을 입력했을 수 있습니다. 이 방법을 사용하십시오.
public static Uri resIdToUri(Context context, int resId) {
return Uri.parse(Consts.ANDROID_RESOURCE + context.getPackageName()
+ Consts.FORESLASH + resId);
}
어디
public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FORESLASH = "/";
답변
이미지 리소스의 URI를 원하고 R.drawable.goomb
이미지 리소스입니다. Builder 함수는 사용자가 요청하는 URI를 생성합니다.
String resourceScheme = "res";
Uri uri = new Uri.Builder()
.scheme(resourceScheme)
.path(String.valueOf(intResourceId))
.build();
답변
위의 답변을 바탕으로 프로젝트의 모든 리소스에 대해 유효한 Uri를 얻는 방법에 대한 kotlin 예제를 공유하고 싶습니다. 코드에 문자열을 입력 할 필요가없고 잘못 입력 할 위험이 없기 때문에 이것이 최상의 솔루션이라고 생각합니다.
val resourceId = R.raw.scannerbeep // r.mipmap.yourmipmap; R.drawable.yourdrawable
val uriBeepSound = Uri.Builder()
.scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
.authority(resources.getResourcePackageName(resourceId))
.appendPath(resources.getResourceTypeName(resourceId))
.appendPath(resources.getResourceEntryName(resourceId))
.build()