package com.zte.appopscontrol; import java.io.File; import java.util.List; import com.zte.appopscontrol.AppOpsState2.AppOpEntry; import android.app.AppOpsManager; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Parcel; import android.os.Parcelable; public class AppOpsUtils { /** * This class holds the per-item data in our Loader. */ public static class AppInfo { private final PackageManager mPm; private final Context mContext; private final ApplicationInfo mInfo; private final File mApkFile; private String mLabel; private Drawable mIcon; private boolean mMounted; private int mPermCounts; public AppInfo(Context context, ApplicationInfo info, int permCounts) { mContext = context; mPm = context.getPackageManager(); mInfo = info; mApkFile = new File(info.sourceDir); mPermCounts = permCounts; } public ApplicationInfo getApplicationInfo() { return mInfo; } public String getLabel() { return mLabel; } public int getPermCounts() { return mPermCounts; } public Drawable getIcon() { if (mIcon == null) { if (mApkFile.exists()) { mIcon = mInfo.loadIcon(mPm); return mIcon; } else { mMounted = false; } } else if (!mMounted) { // If the app wasn't mounted but is now mounted, reload // its icon. if (mApkFile.exists()) { mMounted = true; mIcon = mInfo.loadIcon(mPm); return mIcon; } } else { return mIcon; } return mContext.getResources().getDrawable( android.R.drawable.sym_def_app_icon); } @Override public String toString() { return mLabel; } void loadLabel(Context context) { if (mLabel == null || !mMounted) { if (!mApkFile.exists()) { mMounted = false; mLabel = mInfo.packageName; } else { mMounted = true; CharSequence label = mInfo.loadLabel(context.getPackageManager()); mLabel = label != null ? label.toString() : mInfo.packageName; } } } } /** * This class holds the per-item data in our Loader. */ public static class PermInfo{ private final PackageManager mPm; private final Context mContext; private String mPermLabel; private Drawable mPermIcon; private int mAppCount; private int mSysAppCount; private List<AppOpEntry> mApps; public PermInfo(Context context,String label, Drawable icon) { mContext = context; mPm = context.getPackageManager(); mPermLabel=label; mPermIcon = icon; } public String getLabel() { return mPermLabel; } public Drawable getIcon() { return mPermIcon; } public int getAppCount() { return mAppCount; } public int getSysAppCount() { return mSysAppCount; } public int setAppCount(int count) { return mAppCount = count; } public int setSysAppCount(int count) { return mSysAppCount = count; } public List<AppOpEntry> getmApps() { return mApps; } public void setmApps(List<AppOpEntry> mApps) { this.mApps = mApps; } } }