android获取app当前的渠道号或者获取清单文件application中的任意meta-data(以友盟的多渠道打包为例)

android获取app当前的渠道号或者获取application中的任意meta-data(以友盟的多渠道打包为例)

/**
 * 获取app当前的渠道号或application中指定的meta-data
 *
 * @return 如果没有获取成功(没有对应值,或者异常),则返回值为空
 */
public static String getAppMetaData(Context context, String key) {
    if (context == null || TextUtils.isEmpty(key)) {
        return null;
    }
    String channelNumber = null;
    try {
        PackageManager packageManager = context.getPackageManager();
        if (packageManager != null) {
            ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
            if (applicationInfo != null) {
                if (applicationInfo.metaData != null) {
                    channelNumber = applicationInfo.metaData.getString(key);
                }
            }
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return channelNumber;
}

注:上面所说的key指的是清单文件中你在注册友盟统计时的"UMENG_CHANNEL"(即getChannelNumber(Context context, String key)方法的第二个参数key传入"UMENG_CHANNEL"),而不是"UMENG_APPKEY",也不是任何一个value值

    
    
/**
 * 在需要的地方调用上述方法
 */
 String channelNumber = getAppMetaData(getBaseContext(), "UMENG_CHANNEL");//获取app当前的渠道号

你可能感兴趣的:(安卓开发进阶)