2

We have an application installed on a rooted device as a system application. The latter doesn't have the android.permission.MANAGE_USB and we want to add it to a newer version so that the permission is given to the user automatically. I have followed the post:
bypass android usb host permission confirmation dialog
More specifically, the answer marked as correct from the user d_d_t.

Why doesn't it work? I mean, I have taken this newer version, directly installed it as our original system application and it works perfectly! But when I update the existing version with no usb permission with the newer version it just doesn't work. The new one is just an update. Same certificate and all.
I'm at a loss. Any thoughts?

Our code below:
AndroidManifest.xml.

<uses-permission
android:name="android.permission.MANAGE_USB"
android:protectionLevel="signature" />

Java class.

try {
        PackageManager pm = getApplicationContext().getPackageManager();
        ApplicationInfo ai = pm.getApplicationInfo(getApplicationContext().getPackageName(), 0);
        if (ai != null) {
            UsbManager manager = (UsbManager) getApplicationContext().getSystemService(Context.USB_SERVICE);
            IBinder b = ServiceManager.getService(Context.USB_SERVICE);
            IUsbManager service = IUsbManager.Stub.asInterface(b);

            HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
            Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
            while (deviceIterator.hasNext()) {
                UsbDevice device = deviceIterator.next();
                if (device.getVendorId() == 0x0403) {
                    service.grantDevicePermission(device, ai.uid);
                    service.setDevicePackage(device,getApplicationContext().getPackageName(), 0);
                }
            }
        }

    } catch (Exception e) {
        Log.e("UsbReceiver", "exception " + e);
        e.printStackTrace();
    }
Community
  • 1
  • 1
matiaslezin
  • 113
  • 1
  • 2
  • 7

0 Answers0