@Implementation(minSdk = KITKAT)
  @HiddenApi
  @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES)
  public void setMode(int op, int uid, String packageName, int mode) {
    Integer oldMode = appModeMap.put(getOpMapKey(uid, packageName, op), mode);
    OnOpChangedListener listener = appOpListeners.get(getListenerKey(op, packageName));
    if (listener != null && !Objects.equals(oldMode, mode)) {
      String[] sOpToString = ReflectionHelpers.getStaticField(AppOpsManager.class, "sOpToString");
      listener.onOpChanged(sOpToString[op], packageName);
    }
  }
@Implementation(minSdk = KITKAT)
  @HiddenApi
  @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES)
  public void setMode(int op, int uid, String packageName, int mode) {
    Integer oldMode = appModeMap.put(getOpMapKey(uid, packageName, op), mode);
    OnOpChangedListener listener = appOpListeners.get(getListenerKey(op, packageName));
    if (listener != null && !Objects.equals(oldMode, mode)) {
      String[] sOpToString = ReflectionHelpers.getStaticField(AppOpsManager.class, "sOpToString");
      listener.onOpChanged(sOpToString[op], packageName);
    }
  }
@ Implementation ( minSdk = KITKAT ) @ HiddenApi @ RequiresPermission ( android . Manifest . permission . MANAGE_APP_OPS_MODES ) public void setMode ( int op , int uid , String packageName , int mode ) { Integer oldMode = appModeMap . put ( getOpMapKey ( uid , packageName , op ) , mode ) ; OnOpChangedListener listener = appOpListeners . get ( getListenerKey ( op , packageName ) ) ; if ( listener != null && ! Objects . equals ( oldMode , mode ) ) { String [ ] sOpToString = ReflectionHelpers . getStaticField ( AppOpsManager . class , "sOpToString" ) ; listener . onOpChanged ( sOpToString [ op ] , packageName ) ; } }
Int version of {@link #setMode(String, int, String, int)}.

<p>This method is public for testing {@link #checkOpNoThrow}. If {@link #checkOpNoThrow} is *
called afterwards with the {@code op}, {@code ui}, and {@code packageName} provided, it will *
return the {@code mode} set here.
Int version of { @link #setMode ( String int String int ) } .