Android 屏蔽USB权限弹框

在Android USB设备通讯调试中,频繁的USB权限弹框降低了开发效率。本文介绍了如何屏蔽这个弹框,包括两种方法:一是修改UsbPermissionActivity的onCreate自动点击确定,二是直接让UsbManager.hasPermission返回true实现自动授权。这两种方法分别涉及修改AndroidManifest.xml添加sharedUserId和直接改变系统变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看Android USB主从设备通讯(下载Demo)相关的东西,调试时每次运行都弹下面的框,即使勾选“默认情况下用于该USB设备”,还是会弹出,在调试阶段频繁弹框影响开发效率。


下面分享下怎么屏蔽USB权限框:

1. 做过相关开发的都见过下面代码

        // Check whether we have permission to access the device.
        if (!mUsbManager.hasPermission(device)) {
            Intent intent = new Intent(ACTION_USB_DEVICE_PERMISSION);
            intent.setPackage(getPackageName());
            PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
                    intent, PendingIntent.FLAG_ONE_SHOT);
            mUsbManager.requestPermission(device, pendingIntent);
            return;
        }
意思在没有权限的情况下,请求权限才弹的框。

2. 分析弹框流程

mUsbManager.requestPermission(UsbDevice device...);//以UsbDevice为例,UsbAccessory同理


                a. frameworks/base/core/java/android/hardware/usb/UsbManager.java=>requestPermission

    public void requestPermission(UsbDevice device, PendingIntent pi) {
        try {
            mService.requestDevicePermission(device, mContext.getPackageName(), pi);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

               b. frameworks/base/core/java/android/hardware/usb/UsbDevice.java=>requestDevicePermission

    @Override
    public void requestDevicePermission(UsbDevice device, String packageName, PendingIntent pi) {
        final int userId = UserHandle.getCallingUserId();
        getSettingsForUser(userId).requestPermission(device, packageName, pi);
    }
getSettingsForUserUsbDevice成员函数

    private UsbSettingsManager getSettingsForUser(int userId) {
        synchronized (mLock) {
            UsbSettingsMana
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值