Uri转R:
private static final int NAME_URI_PATH_SEGMENTS = 2;
private static final int TYPE_PATH_SEGMENT_INDEX = 0;
private static final int NAME_PATH_SEGMENT_INDEX = 1;
// android.resource://<package_name>/<resource_id>
private static final int ID_PATH_SEGMENTS = 1;
private static final int RESOURCE_ID_SEGMENT_INDEX = 0;
private int loadResourceIdFromUri(Uri source) {
List<String> segments = source.getPathSegments();
Integer result = null;
if (segments.size() == NAME_URI_PATH_SEGMENTS) {
String packageName = source.getAuthority();
String typeName = segments.get(TYPE_PATH_SEGMENT_INDEX);
String resourceName = segments.get(NAME_PATH_SEGMENT_INDEX);
result = context.getResources().getIdentifier(resourceName, typeName, packageName);
} else if (segments.size() == ID_PATH_SEGMENTS) {
try {
result = Integer.valueOf(segments.get(RESOURCE_ID_SEGMENT_INDEX));
} catch (NumberFormatException e) {
}
}
return result;
}
R 转Uri
private final Resources resources;
private Uri getResourceUri(Integer model) {
try {
return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"
+ resources.getResourcePackageName(model) + '/'
+ resources.getResourceTypeName(model) + '/'
+ resources.getResourceEntryName(model));
} catch (Resources.NotFoundException e) {
return null;
}
}