Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 244259a0 authored by Johan T. Halseth's avatar Johan T. Halseth
Browse files

Adding grantPermission for packageName

Adding a hidden API in UsbManager for system services to grant
permissions to a specific package for a USB device without showing a
user dialog.

Bug: 28760255
Change-Id: Ie68cfc784b7894e9db12ab61bab0f7e6bfa369e3
parent 22ff8d07
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import com.android.internal.util.Preconditions;

import android.app.PendingIntent;
import android.content.Context;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.os.Process;
@@ -475,6 +476,26 @@ public class UsbManager {
        }
    }

    /**
     * Grants permission to specified package for USB device without showing system dialog.
     * Only system components can call this function, as it requires the MANAGE_USB permission.
     * @param device to request permissions for
     * @param packageName of package to grant permissions
     *
     * {@hide}
     */
    public void grantPermission(UsbDevice device, String packageName) {
        try {
            int uid = mContext.getPackageManager()
                .getPackageUidAsUser(packageName, mContext.getUserId());
            mService.grantDevicePermission(device, uid);
        } catch (NameNotFoundException e) {
            Log.e(TAG, "Package " + packageName + " not found.", e);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Returns true if the specified USB function is currently enabled when in device mode.
     * <p>