Java Code Examples for android.app.AppOpsManager#MODE_IGNORED

The following examples show how to use android.app.AppOpsManager#MODE_IGNORED . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AppOpsService.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
@Override
public int checkOperation(int code, int uid, String packageName) {
    verifyIncomingUid(uid);
    verifyIncomingOp(code);
    String resolvedPackageName = resolvePackageName(uid, packageName);
    if (resolvedPackageName == null) {
        return AppOpsManager.MODE_IGNORED;
    }
    synchronized (this) {
        if (isOpRestrictedLocked(uid, code, resolvedPackageName)) {
            return AppOpsManager.MODE_IGNORED;
        }
        code = AppOpsManager.opToSwitch(code);
        UidState uidState = getUidStateLocked(uid, false);
        if (uidState != null && uidState.opModes != null
                && uidState.opModes.indexOfKey(code) >= 0) {
            return uidState.opModes.get(code);
        }
        Op op = getOpLocked(code, uid, resolvedPackageName, false);
        if (op == null) {
            return AppOpsManager.opToDefaultMode(code);
        }
        return op.mode;
    }
}
 
Example 2
Source File: AppOpsService.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
@Override
public int checkAudioOperation(int code, int usage, int uid, String packageName) {
    boolean suspended;
    try {
        suspended = isPackageSuspendedForUser(packageName, uid);
    } catch (IllegalArgumentException ex) {
        // Package not found.
        suspended = false;
    }

    if (suspended) {
        Slog.i(TAG, "Audio disabled for suspended package=" + packageName + " for uid=" + uid);
        return AppOpsManager.MODE_IGNORED;
    }

    synchronized (this) {
        final int mode = checkRestrictionLocked(code, usage, uid, packageName);
        if (mode != AppOpsManager.MODE_ALLOWED) {
            return mode;
        }
    }
    return checkOperation(code, uid, packageName);
}
 
Example 3
Source File: AppOpsService.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
@Override
public int noteProxyOperation(int code, String proxyPackageName,
        int proxiedUid, String proxiedPackageName) {
    verifyIncomingOp(code);
    final int proxyUid = Binder.getCallingUid();
    String resolveProxyPackageName = resolvePackageName(proxyUid, proxyPackageName);
    if (resolveProxyPackageName == null) {
        return AppOpsManager.MODE_IGNORED;
    }
    final int proxyMode = noteOperationUnchecked(code, proxyUid,
            resolveProxyPackageName, -1, null);
    if (proxyMode != AppOpsManager.MODE_ALLOWED || Binder.getCallingUid() == proxiedUid) {
        return proxyMode;
    }
    String resolveProxiedPackageName = resolvePackageName(proxiedUid, proxiedPackageName);
    if (resolveProxiedPackageName == null) {
        return AppOpsManager.MODE_IGNORED;
    }
    return noteOperationUnchecked(code, proxiedUid, resolveProxiedPackageName,
            proxyMode, resolveProxyPackageName);
}
 
Example 4
Source File: PermissionUtils.java    From EnhancedScreenshotNotification with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Check if application can draw over other apps
 * @param context Context
 * @return Boolean
 */
public static boolean canDrawOverlays(@NonNull Context context) {
    final int sdkInt = Build.VERSION.SDK_INT;
    if (sdkInt >= Build.VERSION_CODES.M) {
        if (sdkInt == Build.VERSION_CODES.O) {
            // Sometimes Settings.canDrawOverlays returns false after allowing permission.
            // Google Issue Tracker: https://issuetracker.google.com/issues/66072795
            AppOpsManager appOpsMgr = context.getSystemService(AppOpsManager.class);
            if (appOpsMgr != null) {
                int mode = appOpsMgr.checkOpNoThrow(
                        "android:system_alert_window",
                        android.os.Process.myUid(),
                        context.getPackageName()
                );
                return mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGNORED;
            } else {
                return false;
            }
        }
        // Default
        return android.provider.Settings.canDrawOverlays(context);
    }
    return true; // This fallback may returns a incorrect result.
}
 
Example 5
Source File: CaptureActivity.java    From ScanZbar with Apache License 2.0 6 votes vote down vote up
private void checkPermissionCamera() {
    int checkPermission = 0;
    if (Build.VERSION.SDK_INT >= 23) {
        // checkPermission =ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA);
        checkPermission = PermissionChecker.checkSelfPermission(this, Manifest.permission.CAMERA);
        if (checkPermission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.CAMERA},
                    MY_PERMISSIONS_REQUEST_CAMERA);
        } else {
            isOpenCamera = true;
        }

    } else {
        checkPermission = checkPermission(26);
        if (checkPermission == AppOpsManager.MODE_ALLOWED) {
            isOpenCamera = true;
        } else if (checkPermission == AppOpsManager.MODE_IGNORED) {
            isOpenCamera = false;
            displayFrameworkBugMessageAndExit();
        }
    }
}
 
Example 6
Source File: CheckRunInBackgroundActivity.java    From MiPushFramework with GNU General Public License v3.0 6 votes vote down vote up
@Override
public void onConnected(@NonNull PushController controller,
                        Bundle savedInstanceState) {
    super.onConnected(controller, savedInstanceState);
    int result = controller.checkOp(AppOpsManagerOverride.OP_RUN_IN_BACKGROUND);
    allow = (result != AppOpsManager.MODE_IGNORED);

    if (allow) {
        nextPage();
        finish();
        return;
    }
    layout.getNavigationBar()
            .setNavigationBarListener(this);
    mText.setText(Html.fromHtml(getString(R.string.wizard_descr_run_in_background, (Utils.isAppOpsInstalled() ? getString(R.string.run_in_background_rikka_appops) :
            getString(R.string.run_in_background_appops_root)))));
    layout.setHeaderText(R.string.wizard_title_run_in_background);
    setContentView(layout);
}
 
Example 7
Source File: OpsxManager.java    From AppOpsX with MIT License 6 votes vote down vote up
public OpsResult disableAllPermission(final String packageName) throws Exception {
  OpsResult opsForPackage = getOpsForPackage(packageName);
  if (opsForPackage != null) {
    if (opsForPackage.getException() == null) {
      List<PackageOps> list = opsForPackage.getList();
      if (list != null && !list.isEmpty()) {
        for (PackageOps packageOps : list) {
          List<OpEntry> ops = packageOps.getOps();
          if (ops != null) {
            for (OpEntry op : ops) {
              if (op.getMode() != AppOpsManager.MODE_IGNORED) {
                setOpsMode(packageName, op.getOp(), AppOpsManager.MODE_IGNORED);
              }
            }
          }
        }
      }
    } else {
      throw new Exception(opsForPackage.getException());
    }
  }
  return opsForPackage;
}
 
Example 8
Source File: Utility.java    From Blackbulb with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Check if application can draw over other apps
 * @param context Context
 * @return Boolean
 */
public static boolean canDrawOverlays(Context context) {
    int sdkInt = Build.VERSION.SDK_INT;
    if (sdkInt >= Build.VERSION_CODES.M) {
        if (sdkInt == Build.VERSION_CODES.O) {
            // Sometimes Settings.canDrawOverlays returns false after allowing permission.
            // Google Issue Tracker: https://issuetracker.google.com/issues/66072795
            AppOpsManager appOpsMgr = context.getSystemService(AppOpsManager.class);
            if (appOpsMgr != null) {
                int mode = appOpsMgr.checkOpNoThrow(
                        "android:system_alert_window",
                        android.os.Process.myUid(),
                        context.getPackageName()
                );
                return mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGNORED;
            } else {
                return false;
            }
        }
        // Default
        return android.provider.Settings.canDrawOverlays(context);
    }
    return true; // This fallback may returns a incorrect result.
}
 
Example 9
Source File: CaptureActivity.java    From ZbarCode with Apache License 2.0 6 votes vote down vote up
private void checkPermissionCamera() {
    int checkPermission = 0;
    if (Build.VERSION.SDK_INT >= 23) {
        // checkPermission =ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA);
        checkPermission = PermissionChecker.checkSelfPermission(this, Manifest.permission.CAMERA);
        if (checkPermission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.CAMERA},
                    MY_PERMISSIONS_REQUEST_CAMERA);
        } else {
            isOpenCamera = true;
        }

    } else {
        checkPermission = checkPermission(26);
        if (checkPermission == AppOpsManager.MODE_ALLOWED) {
            isOpenCamera = true;
        } else if (checkPermission == AppOpsManager.MODE_IGNORED) {
            isOpenCamera = false;
            displayFrameworkBugMessageAndExit();
        }
    }
}
 
Example 10
Source File: AppOpsService.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
int evalMode(int mode) {
    if (mode == AppOpsManager.MODE_FOREGROUND) {
        return state <= UID_STATE_LAST_NON_RESTRICTED
                ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED;
    }
    return mode;
}
 
Example 11
Source File: AppOpsService.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
@Override
public int noteOperation(int code, int uid, String packageName) {
    verifyIncomingUid(uid);
    verifyIncomingOp(code);
    String resolvedPackageName = resolvePackageName(uid, packageName);
    if (resolvedPackageName == null) {
        return AppOpsManager.MODE_IGNORED;
    }
    return noteOperationUnchecked(code, uid, resolvedPackageName, 0, null);
}
 
Example 12
Source File: PermPresenter.java    From AppOpsX with MIT License 5 votes vote down vote up
void switchMode(OpEntryInfo info, boolean v) {
  if (v) {
    info.mode = AppOpsManager.MODE_ALLOWED;
  } else {
    info.mode = AppOpsManager.MODE_IGNORED;
  }
  Map<String, String> map = new HashMap<String, String>(2);
  map.put("new_mode", String.valueOf(info.mode));
  map.put("op_name", info.opName);

  setMode(info);
}
 
Example 13
Source File: OpEntryInfo.java    From AppOpsX with MIT License 5 votes vote down vote up
public void changeStatus() {
  if (isAllowed()) {
    this.mode = AppOpsManager.MODE_IGNORED;
  } else {
    this.mode = AppOpsManager.MODE_ALLOWED;
  }
}
 
Example 14
Source File: Helper.java    From AppOpsX with MIT License 5 votes vote down vote up
public static Observable<OpsResult> setMode(final Context context, final String pkgName,
    final OpEntryInfo opEntryInfo,boolean isAllow) {
  if (isAllow) {
    opEntryInfo.mode = AppOpsManager.MODE_ALLOWED;
  } else {
    opEntryInfo.mode = AppOpsManager.MODE_IGNORED;
  }
  Map<String, String> map = new HashMap<String, String>(2);
  map.put("new_mode", String.valueOf(opEntryInfo.mode));
  map.put("op_name", opEntryInfo.opName);
  return setMode(context, pkgName, opEntryInfo);
}
 
Example 15
Source File: AppOpsService.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
private int noteOperationUnchecked(int code, int uid, String packageName,
        int proxyUid, String proxyPackageName) {
    synchronized (this) {
        final Ops ops = getOpsRawLocked(uid, packageName, true /* edit */,
                false /* uidMismatchExpected */);
        if (ops == null) {
            if (DEBUG) Slog.d(TAG, "noteOperation: no op for code " + code + " uid " + uid
                    + " package " + packageName);
            return AppOpsManager.MODE_ERRORED;
        }
        final Op op = getOpLocked(ops, code, true);
        if (isOpRestrictedLocked(uid, code, packageName)) {
            return AppOpsManager.MODE_IGNORED;
        }
        final UidState uidState = ops.uidState;
        if (op.duration == -1) {
            Slog.w(TAG, "Noting op not finished: uid " + uid + " pkg " + packageName
                    + " code " + code + " time=" + op.time[uidState.state]
                    + " duration=" + op.duration);
        }
        op.duration = 0;
        final int switchCode = AppOpsManager.opToSwitch(code);
        // If there is a non-default per UID policy (we set UID op mode only if
        // non-default) it takes over, otherwise use the per package policy.
        if (uidState.opModes != null && uidState.opModes.indexOfKey(switchCode) >= 0) {
            final int uidMode = uidState.evalMode(uidState.opModes.get(switchCode));
            if (uidMode != AppOpsManager.MODE_ALLOWED) {
                if (DEBUG) Slog.d(TAG, "noteOperation: uid reject #" + uidMode + " for code "
                        + switchCode + " (" + code + ") uid " + uid + " package "
                        + packageName);
                op.rejectTime[uidState.state] = System.currentTimeMillis();
                return uidMode;
            }
        } else {
            final Op switchOp = switchCode != code ? getOpLocked(ops, switchCode, true) : op;
            final int mode = switchOp.getMode();
            if (mode != AppOpsManager.MODE_ALLOWED) {
                if (DEBUG) Slog.d(TAG, "noteOperation: reject #" + mode + " for code "
                        + switchCode + " (" + code + ") uid " + uid + " package "
                        + packageName);
                op.rejectTime[uidState.state] = System.currentTimeMillis();
                return mode;
            }
        }
        if (DEBUG) Slog.d(TAG, "noteOperation: allowing code " + code + " uid " + uid
                + " package " + packageName);
        op.time[uidState.state] = System.currentTimeMillis();
        op.rejectTime[uidState.state] = 0;
        op.proxyUid = proxyUid;
        op.proxyPackageName = proxyPackageName;
        return AppOpsManager.MODE_ALLOWED;
    }
}
 
Example 16
Source File: AppOpsService.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
@Override
public int startOperation(IBinder token, int code, int uid, String packageName,
        boolean startIfModeDefault) {
    verifyIncomingUid(uid);
    verifyIncomingOp(code);
    String resolvedPackageName = resolvePackageName(uid, packageName);
    if (resolvedPackageName == null) {
        return  AppOpsManager.MODE_IGNORED;
    }
    ClientState client = (ClientState)token;
    synchronized (this) {
        final Ops ops = getOpsRawLocked(uid, resolvedPackageName, true /* edit */,
                false /* uidMismatchExpected */);
        if (ops == null) {
            if (DEBUG) Slog.d(TAG, "startOperation: no op for code " + code + " uid " + uid
                    + " package " + resolvedPackageName);
            return AppOpsManager.MODE_ERRORED;
        }
        final Op op = getOpLocked(ops, code, true);
        if (isOpRestrictedLocked(uid, code, resolvedPackageName)) {
            return AppOpsManager.MODE_IGNORED;
        }
        final int switchCode = AppOpsManager.opToSwitch(code);
        final UidState uidState = ops.uidState;
        // If there is a non-default per UID policy (we set UID op mode only if
        // non-default) it takes over, otherwise use the per package policy.
        if (uidState.opModes != null && uidState.opModes.indexOfKey(switchCode) >= 0) {
            final int uidMode = uidState.evalMode(uidState.opModes.get(switchCode));
            if (uidMode != AppOpsManager.MODE_ALLOWED
                    && (!startIfModeDefault || uidMode != AppOpsManager.MODE_DEFAULT)) {
                if (DEBUG) Slog.d(TAG, "noteOperation: uid reject #" + uidMode + " for code "
                        + switchCode + " (" + code + ") uid " + uid + " package "
                        + resolvedPackageName);
                op.rejectTime[uidState.state] = System.currentTimeMillis();
                return uidMode;
            }
        } else {
            final Op switchOp = switchCode != code ? getOpLocked(ops, switchCode, true) : op;
            final int mode = switchOp.getMode();
            if (mode != AppOpsManager.MODE_ALLOWED
                    && (!startIfModeDefault || mode != AppOpsManager.MODE_DEFAULT)) {
                if (DEBUG) Slog.d(TAG, "startOperation: reject #" + mode + " for code "
                        + switchCode + " (" + code + ") uid " + uid + " package "
                        + resolvedPackageName);
                op.rejectTime[uidState.state] = System.currentTimeMillis();
                return mode;
            }
        }
        if (DEBUG) Slog.d(TAG, "startOperation: allowing code " + code + " uid " + uid
                + " package " + resolvedPackageName);
        if (op.startNesting == 0) {
            op.startRealtime = SystemClock.elapsedRealtime();
            op.time[uidState.state] = System.currentTimeMillis();
            op.rejectTime[uidState.state] = 0;
            op.duration = -1;
            scheduleOpActiveChangedIfNeededLocked(code, uid, packageName, true);
        }
        op.startNesting++;
        uidState.startNesting++;
        if (client.mStartedOps != null) {
            client.mStartedOps.add(op);
        }
    }

    return AppOpsManager.MODE_ALLOWED;
}