package com.mfh.comna.comn;
import android.app.Application;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import com.mfh.comn.config.ConfigsParseHelper;
import com.mfh.comna.api.helper.AppHelper;
import com.mfh.comna.bizz.BizApplication;
import com.mfh.comna.comn.cfg.UConfigCache;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.io.InputStream;
/**
* 通用应用类。我们所有的应用都要从该类继承!
*
* @author zhangyz created on 2013-5-25
* @since Framework 1.0
*/
public class ComnApplication extends Application{
private static final String TAG = ComnApplication.class.getSimpleName();
private static Context context;
//配置对象
private static UConfigCache uconfig;
private static String appUserAgent;
//启动机制
public enum LaunchMechanism {
DIRECT,
NOTIFICATION,
URL
}
private LaunchMechanism launchMechanism = LaunchMechanism.DIRECT;
/**
* 获取统一配置文件别名,以示区分
* @return
* @author zhangyz created on 2013-5-25
*/
protected String getConfigAlias() {
return ConfigsParseHelper.configAlias;
}
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
//初始化配置对象
try {
InputStream in = AppHelper.getAm().open(getConfigAlias());
// String[] files = AppHelper.getAm().list("/");
// for (int ii = 0; ii < files.length; ii++) {
// System.out.println(files[ii]);
// }
uconfig = UConfigCache.getConfig(getConfigAlias());
uconfig.init(in);
}
catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onTerminate() {
super.onTerminate();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
/**
* 获取应用上下文
* @return
* @author zhangyz created on 2014-3-8
*/
public static Context getAppContext() {
return context;
}
/**==
* 获取配置读取接口
* @return
* @author zhangyz created on 2014-3-8
*/
public static UConfigCache getUconfig() {
return uconfig;
}
/**
* 获取App安装包信息
* @return
*/
public static PackageInfo getPackageInfo() {
PackageInfo info = null;
try {
PackageManager pm = ComnApplication.getAppContext().getPackageManager();
String packageName = ComnApplication.getAppContext().getPackageName();
info = pm.getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace(System.err);
}
if(info == null) {
info = new PackageInfo();
}
return info;
}
/**
* 获取当前程序内部版本号.若没有或失败返回-1.
* @param context 上下文
*/
public static int getVersionCode() {
try {
PackageManager pm = ComnApplication.getAppContext().getPackageManager();
String packageName = ComnApplication.getAppContext().getPackageName();
PackageInfo pi = pm.getPackageInfo(packageName, 0);
return pi.versionCode;
}
catch (Exception e) {
return -1;
}
}
/**
* 获取当前程序内部版本号.若没有或失败返回-1.
* @param context 上下文
*/
public static String getVersionName() {
PackageManager pm = ComnApplication.getAppContext().getPackageManager();//context为当前Activity上下文
String packageName = ComnApplication.getAppContext().getPackageName();
try {
PackageInfo pi = pm.getPackageInfo(packageName, 0);
return pi.versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return null;
}
}
/**
* 获取UserAgent,登录时填入Header
* */
public static String getUserAgent() {
if(StringUtils.isEmpty(appUserAgent)) {
StringBuilder ua = new StringBuilder("MFH");
ua.append('/'+ getVersionName() + '_' + getVersionCode());//App版本
ua.append("/Android");//手机系统平台
ua.append("/"+ android.os.Build.VERSION.RELEASE);//手机系统版本
ua.append("/"+ android.os.Build.MODEL); //手机型号
ua.append("/"+ ComnAppHelper.getAppId());//客户端唯一标识
appUserAgent = ua.toString();
}
return appUserAgent;
}
public void setLaunchMechanism(LaunchMechanism launchMechanism) {
this.launchMechanism = launchMechanism;
}
}