package tv.danmaku.android; import java.util.List; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; public class PackageManagerHelper { public static PackageInfo getPackageInfo(Context context, String packageName, int flag) { PackageManager manager = context.getPackageManager(); if (manager == null) return null; try { return manager.getPackageInfo(packageName, flag); } catch (NameNotFoundException e) { e.printStackTrace(); return null; } } public static ApplicationInfo getApplicationInfo(Context context, String packageName) { PackageInfo pkgInfo = getPackageInfo(context, packageName, 0); if (pkgInfo == null) return null; return pkgInfo.applicationInfo; } public static String getAppLabel(Context context, String packageName) { PackageManager pkgManager = context.getPackageManager(); if (pkgManager == null) return null; PackageInfo pkgInfo; try { pkgInfo = pkgManager.getPackageInfo(packageName, 0); if (pkgInfo == null) return null; } catch (NameNotFoundException e) { e.printStackTrace(); return null; } ApplicationInfo appInfo = pkgInfo.applicationInfo; if (appInfo == null) return null; CharSequence cs = appInfo.loadLabel(pkgManager); if (cs == null) return null; return cs.toString(); } public static ActivityInfo getActivityInfo(PackageManager pkgManager, ComponentName name) { if (pkgManager == null) return null; try { ActivityInfo activityInfo = pkgManager.getActivityInfo(name, 0); if (activityInfo == null) return null; return activityInfo; } catch (NameNotFoundException e) { e.printStackTrace(); } return null; } public static String getActivityLabel(Context context, ComponentName name) { PackageManager pkgManager = context.getPackageManager(); if (pkgManager == null) return null; ActivityInfo activityInfo = getActivityInfo(pkgManager, name); if (activityInfo == null) return null; CharSequence cs = activityInfo.loadLabel(pkgManager); if (cs == null) return null; return cs.toString(); } public static int getActivitOrientation(Context context, ComponentName name) { PackageManager pkgManager = context.getPackageManager(); if (pkgManager == null) return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; ActivityInfo activityInfo = getActivityInfo(pkgManager, name); if (activityInfo == null) return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; return activityInfo.screenOrientation; } public static int getActivitOrientation(Activity activity) { return getActivitOrientation(activity, activity.getComponentName()); } public static List<ResolveInfo> queryIntentActivities(Context context, Intent intent, int flags) { PackageManager manager = context.getPackageManager(); if (manager == null) return null; return manager.queryIntentActivities(intent, flags); } public static String getVersion(Context context) { try { PackageInfo packageInfo = context.getPackageManager() .getPackageInfo(context.getPackageName(), 0); return packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { } return null; } }