android.app.AppOpsManager#PackageOps ( )源码实例Demo

下面列出了android.app.AppOpsManager#PackageOps ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: android_9.0.0_r45   文件: AppOpsService.java
@Override
public List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName,
        int[] ops) {
    mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS,
            Binder.getCallingPid(), Binder.getCallingUid(), null);
    String resolvedPackageName = resolvePackageName(uid, packageName);
    if (resolvedPackageName == null) {
        return Collections.emptyList();
    }
    synchronized (this) {
        Ops pkgOps = getOpsRawLocked(uid, resolvedPackageName, false /* edit */,
                false /* uidMismatchExpected */);
        if (pkgOps == null) {
            return null;
        }
        ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops);
        if (resOps == null) {
            return null;
        }
        ArrayList<AppOpsManager.PackageOps> res = new ArrayList<AppOpsManager.PackageOps>();
        AppOpsManager.PackageOps resPackage = new AppOpsManager.PackageOps(
                pkgOps.packageName, pkgOps.uidState.uid, resOps);
        res.add(resPackage);
        return res;
    }
}
 
源代码2 项目: android_9.0.0_r45   文件: AppOpsService.java
@Override
public List<AppOpsManager.PackageOps> getUidOps(int uid, int[] ops) {
    mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS,
            Binder.getCallingPid(), Binder.getCallingUid(), null);
    synchronized (this) {
        UidState uidState = getUidStateLocked(uid, false);
        if (uidState == null) {
            return null;
        }
        ArrayList<AppOpsManager.OpEntry> resOps = collectOps(uidState.opModes, ops);
        if (resOps == null) {
            return null;
        }
        ArrayList<AppOpsManager.PackageOps> res = new ArrayList<AppOpsManager.PackageOps>();
        AppOpsManager.PackageOps resPackage = new AppOpsManager.PackageOps(
                null, uidState.uid, resOps);
        res.add(resPackage);
        return res;
    }
}
 
源代码3 项目: android_9.0.0_r45   文件: AppStateTracker.java
/**
 * Update {@link #mRunAnyRestrictedPackages} with the current app ops state.
 */
@GuardedBy("mLock")
private void refreshForcedAppStandbyUidPackagesLocked() {
    mRunAnyRestrictedPackages.clear();
    final List<PackageOps> ops = mAppOpsManager.getPackagesForOps(
            new int[] {TARGET_OP});

    if (ops == null) {
        return;
    }
    final int size = ops.size();
    for (int i = 0; i < size; i++) {
        final AppOpsManager.PackageOps pkg = ops.get(i);
        final List<AppOpsManager.OpEntry> entries = ops.get(i).getOps();

        for (int j = 0; j < entries.size(); j++) {
            AppOpsManager.OpEntry ent = entries.get(j);
            if (ent.getOp() != TARGET_OP) {
                continue;
            }
            if (ent.getMode() != AppOpsManager.MODE_ALLOWED) {
                mRunAnyRestrictedPackages.add(Pair.create(
                        pkg.getUid(), pkg.getPackageName()));
            }
        }
    }
}