1:清单文件写入
2:获得channel的方法
2.1简单的方法
private String getChannel() {
try {
PackageManager pm = getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
return appInfo.metaData.getString("UMENG_CHANNEL");
} catch (PackageManager.NameNotFoundException ignored) {
}
return "";
}
2.2.稍微麻烦的但是全面的方法
/**
* 获取application中指定的meta-data
* @return 如果没有获取成功(没有对应值,或者异常),则返回值为空
*/
public static String getAppMetaData(Context ctx, String key) {
if (ctx == null || TextUtils.isEmpty(key)) {
return null;
}
String resultData = null;
try {
PackageManager packageManager = ctx.getPackageManager();
if (packageManager != null) {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null) {
if (applicationInfo.metaData != null) {
resultData = applicationInfo.metaData.getString(key);
}
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return resultData;
}
3:最后你会发现如果你的values值是拼音或字符串还行,但是纯数字转换会出现问题例如你们会用1001代表应用宝渠道
系统就会 自动的 判断 1001 是int型,这个时候只能使用 applicationInfo.metaData.getInt() 方法获取
4:解决办法:
MyAplication.umeng_channal = applicationInfo.metaData.get()+“”;