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);
}
}