package com.llf.basemodel.utils;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import java.util.ArrayList;
import java.util.List;
/**
* Created by llf on 2017/3/6.
* 获取应用信息
*/
public class AppInfoUtil {
private AppInfoUtil() { }
/**
* 获取应用程序信息
*/
public static PackageInfo getPackageInfo(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo info = packageManager.getPackageInfo(context.getPackageName(), 0);
return info;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取应用程序名称
*/
public static String getAppName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelRes;
return context.getResources().getString(labelRes);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取应用程序版本名称
*/
public static String getVersionName(Context context) {
return null == getPackageInfo(context) ? null : getPackageInfo(context).versionName;
}
/**
* 获取应用程序版本号
*/
public static int getVersionCode(Context context) {
return null == getPackageInfo(context) ? null : getPackageInfo(context).versionCode;
}
/**
* 获取应用程序包名
*/
public static String getPackageName(Context context) {
return null == getPackageInfo(context) ? null : getPackageInfo(context).packageName;
}
/**
* 判断当前应用程序是否处于后台
* <pre>需要权限:<uses-permission android:name="android.permission.GET_TASKS" /> </pre>
*/
public static boolean isApplicationToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
/**
* 获取当前运行的进程名
*/
public static String getProcessName(Context context) {
int pid = android.os.Process.myPid();
ActivityManager activityManager = (ActivityManager) context.getSystemService(
Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
return appProcess.processName;
}
}
return null;
}
/**
* 获取当前运行的所有进程名
*/
public static List<String> getProcessName(Context context, String packageName) {
List<String> list = new ArrayList<String>();
ActivityManager activityManager = (ActivityManager) context.getSystemService(
Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
if (appProcess.processName.startsWith(packageName)) {
list.add(appProcess.processName);
}
}
return list;
}
/**
* 获取当前运行界面的包名
*/
public static String getTopPackageName(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(
Context.ACTIVITY_SERVICE);
ComponentName cn = activityManager.getRunningTasks(1).get(0).topActivity;
return cn.getPackageName();
}
public static boolean isWeixinAvilible(Context context) {
final PackageManager packageManager = context.getPackageManager();// 获取packagemanager
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mm")) {
return true;
}
}
}
return false;
}
/**
* 判断qq是否可用
*
* @param context
* @return
*/
public static boolean isQQClientAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mobileqq")) {
return true;
}
}
}
return false;
}
}