package xyz.yhsj.yhutils.io; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.graphics.drawable.Drawable; import java.io.IOException; import java.io.InputStream; import xyz.yhsj.yhutils.string.StringUtils; /** * Asset 工具类<br> */ @SuppressWarnings("deprecation") public class ResouceUtil { /** * 打开Asset下的文件 * * @param fileName 文件名 * @return */ public static InputStream openAssetFile(Context context, String fileName) { AssetManager am = context.getAssets(); InputStream is = null; try { is = am.open(fileName); } catch (IOException e) { e.printStackTrace(); } return is; } /** * 从assets 文件夹中读取文本数据 */ public static String getStringFromAssets(final Context context, String fileName) { String result = ""; try { InputStream in = context.getResources().getAssets().open(fileName); // 获取文件的字节数 int lenght = in.available(); // 创建byte数组 byte[] buffer = new byte[lenght]; // 将文件中的数据读到byte数组中 in.read(buffer); result = new String(buffer, "UTF-8"); in.close(); } catch (Exception e) { e.printStackTrace(); } return result; } /** * 从assets 文件夹中读取图片 */ public static Drawable loadImageFromAsserts(final Context ctx, String fileName) { try { InputStream is = ctx.getResources().getAssets().open(fileName); return Drawable.createFromStream(is, null); } catch (IOException e) { if (e != null) { e.printStackTrace(); } } catch (OutOfMemoryError e) { if (e != null) { e.printStackTrace(); } } catch (Exception e) { if (e != null) { e.printStackTrace(); } } return null; } /** * 从assert文件夹下读取文件到字节数组 * * @param context 上下文 * @param fileName 文件名 * @return 文件字节数组 */ public static byte[] readBytesFromAssert(Context context, String fileName) { InputStream is = null; byte[] buffer = null; try { is = context.getAssets().open(fileName); int size = is.available(); buffer = new byte[size]; is.read(buffer); } catch (IOException e) { e.printStackTrace(); } finally { if (is != null) { try { is.close(); is = null; } catch (IOException e) { e.printStackTrace(); } } } return buffer; } /** * 从raw文件夹下读取文件到字节数组 * * @param context 上下文 * @param rawId raw资源id * @return 文件字节数组 */ public static byte[] readBytesFromRaw(Context context, int rawId) { InputStream is = null; byte[] buffer = null; try { is = context.getResources().openRawResource(rawId); int size = is.available(); buffer = new byte[size]; is.read(buffer); } catch (IOException e) { e.printStackTrace(); } finally { if (is != null) { try { is.close(); is = null; } catch (IOException e) { e.printStackTrace(); } } } return buffer; } /** * 读取raw目录的文件内容 * * @param context 内容上下文 * @param rawFileId raw文件名id * @return */ public static String readRawValue(Context context, int rawFileId) { String result = ""; try { InputStream is = context.getResources().openRawResource(rawFileId); int len = is.available(); byte[] buffer = new byte[len]; is.read(buffer); result = new String(buffer, "UTF-8"); is.close(); } catch (Exception e) { e.printStackTrace(); } return result; } /** * 获取 layout 布局文件 * * @param context Context * @param resName layout xml 的文件名 * @return layout */ public static int getLayoutId(Context context, String resName) { return context.getResources().getIdentifier(resName, "layout", context.getPackageName()); } /** * 获取 string 值 * * @param context Context * @param resName string name的名称 * @return string */ public static int getStringId(Context context, String resName) { return context.getResources().getIdentifier(resName, "string", context.getPackageName()); } /** * 获取 drawable * * @param context Context * @param resName drawable 的名称 * @return drawable */ public static int getDrawableId(Context context, String resName) { return context.getResources().getIdentifier(resName, "drawable", context.getPackageName()); } /** * 获取 mipmap * * @param context * @param resName * @return */ public static int getMipmapId(Context context, String resName) { return context.getResources().getIdentifier(resName, "mipmap", context.getPackageName()); } /** * 获取 style * * @param context Context * @param resName style的名称 * @return style */ public static int getStyleId(Context context, String resName) { return context.getResources().getIdentifier(resName, "style", context.getPackageName()); } /** * 获取 styleable * * @param context Context * @param resName styleable 的名称 * @return styleable */ public static Object getStyleableId(Context context, String resName) { return context.getResources().getIdentifier(resName, "styleable", context.getPackageName()); } /** * 获取 anim * * @param context Context * @param resName anim xml 文件名称 * @return anim */ public static int getAnimId(Context context, String resName) { return context.getResources().getIdentifier(resName, "anim", context.getPackageName()); } /** * 获取 id * * @param context Context * @param resName id 的名称 * @return */ public static int getId(Context context, String resName) { return context.getResources().getIdentifier(resName, "id", context.getPackageName()); } /** * color * * @param context Context * @param resName color 名称 * @return */ public static int getColorId(Context context, String resName) { return context.getResources().getIdentifier(resName, "color", context.getPackageName()); } /** * 获取Manifest Meta Data * * @param context * @param metaKey * @return */ public static String getMetaData(Context context, String metaKey) { String name = context.getPackageName(); ApplicationInfo appInfo; String msg = ""; try { appInfo = context.getPackageManager().getApplicationInfo(name, PackageManager.GET_META_DATA); msg = appInfo.metaData.getString(metaKey); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } if (StringUtils.isEmpty(msg)) { return ""; } return msg; } /** * 获得渠道号 * * @param context * @param channelKey * @return */ public static String getChannelNo(Context context, String channelKey) { return getMetaData(context, channelKey); } }