Android应用参数的获取
package com.prtsdkapp;
import java.lang.ref.WeakReference;
import java.util.List;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.util.Log;
public class getContextParm {
private static final String TAG = "ContextMgr";
/**
* 两个进程要共用sharedPreferences文件,则context要一样
* @param context
* @return
*/
public static Context getContext(Context context, String appPackageName) {
// String packageName = "com.anyfish.app";
WeakReference<Context> mContext = new WeakReference<Context>(context);
Context con = mContext.get();
try {
Context contextApp = mContext.get().createPackageContext(
appPackageName, 0);
con = contextApp;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return con;
}
/**
* 获取当前进程名称
* @param context
* @return
*/
public static String getCurProcessName(Context context) {
Log.d(TAG, "getCurProcessName");
int pid = android.os.Process.myPid();
ActivityManager mActivityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager
.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
Log.d(TAG, "getCurProcessName:" + appProcess.processName);
return appProcess.processName;
}
}
return null;
}
/**
* 获取sdk版本号
* @return
*/
public static int getSDKVersionNumber() {
int sdkVersion;
try {
sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK);
} catch (NumberFormatException e) {
sdkVersion = 0;
}
return sdkVersion;
}
/**
* 检测当前packageName程序是否属于前台程序
*
* @param app
* @param appPackageName
* @return
*/
public static boolean isTopActivity(Context context, String appPackageName) {
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1);
if (tasksInfo.size() > 0) {
if (tasksInfo.get(0).topActivity.getPackageName().contains(
appPackageName)) {
return true;
}
}
return false;
}
/**
* 判断当前packageName程序是否切换到后台了
* @param app
* @param appPackageName
* @return
*/
public static boolean isBackgroundActivity(Context context,
String appPackageName) {
if (isTopActivity(context, appPackageName)) {
return false;
}
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> run = am.getRunningAppProcesses();
for (RunningAppProcessInfo ra : run) {
if (ra.processName.contains(appPackageName)
&& !ra.processName.contains(appPackageName + ":")) {
return true;
}
}
return false;
}
/**
* 判断程序是否安装
* @param context
* @return
*/
public static boolean isAppInstalled(Context context, String packageName) {
Log.d(TAG, "isAppInstalled");
PackageManager mPackageManager = context.getPackageManager();
if (mPackageManager == null) {
return false;
}
List<PackageInfo> pkgs = mPackageManager
.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
boolean installed = false;
for (PackageInfo info : pkgs) {
if (info.packageName.equals(packageName)) {
installed = true;
break;
}
}
return installed;
}
}