首页 > 其他分享 >Android开发之一:10.0 USB弹窗权限流程解析

Android开发之一:10.0 USB弹窗权限流程解析

时间:2023-04-25 15:31:57浏览次数:45  
标签:10.0 调用 USB UsbManager requestPermission Android 权限 requestPermissionDialog


Android开发之一:10.0 USB弹窗权限流程解析_java

1. 新建activity,获取UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE)

2. 获取所以的USB设备HashMap<String, UsbDevice> map = usbManager.getDeviceList()

3. 过滤别的USB设备,拿到自己USB的USBDevice类,然后请求USB权限,usbManager.requestPermission(usbDevice, pendingIntent);并注册一个回调意图,用来判断用户是否授予权限

4. UsbManager类的requestPermission方法会调用mService. requestDevicePermission

  1. mService是IUsbManager的对象,而IUsbManager是一个AIDL接口https://www.androidos.net.cn/android/8.0.0_r4/xref/frameworks/base/core/java/android/hardware/usb/IUsbManager.aidl

UsbService是它的实现类,所以最终是调用的UsbService的requestDevicePermission方法

6. 在requestDevicePermission方法里面调用的getSettingsForUser(userId).requestPermission

7. getSettingsForUser(userId)其实是去获取UsbUserSettingsManager实例,所以是调用的UsbUserSettingsManager的requestPermission方法

8. 在requestPermission方法里面首先会进行判断是否拥有权限,如果有权限直接回调最开始的意图广播,如果没有也会发生用户拒绝的广播,区别是返回值不一样intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, true);

9. 接着会调用自身的requestPermissionDialog方法,在requestPermissionDialog方法里面又会去调用mUsbPermissionManager.requestPermissionDialog方法

10.最终在UsbPermissionManager类的requestPermissionDialog方法中调用startActivityAsUser 启动UsbPermissionActivity权限申请对话框

标签:10.0,调用,USB,UsbManager,requestPermission,Android,权限,requestPermissionDialog
From: https://blog.51cto.com/u_16081664/6224156

相关文章

  • 直播平台软件开发,一个简单的Android登录实现demo
    直播平台软件开发,一个简单的Android登录实现demo一、登录活动 packagecom.example.login; importandroid.content.Intent;importandroid.os.Bundle;importandroid.text.TextUtils;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText......
  • Android源码在线查看网站
    一、aospxrefhttp://aospxref.com/优点:更新速度快缺点:历史版本较少二、androidxrefhttp://androidxref.com/优点:历史版本较多缺点:更新速度慢两者可搭配使用。非常便利三、Google在线源码上面两个的平台存在如下几点问题:搜索关键字困难且不精确,特别是对有括号和“_”的......
  • Android编译系统
    一.概述在Android7.0之前,Android编译系统使用GNUMake描述和shell来构建编译规则,模块定义都使用Android.mk进行定义,Android.mk的本质就是Makefile,但是随着Android的工程越来越大,模块越来越多,Makefile组织的项目编译时间越来越长。因此,在Android7.0开始,Google采用ninja来代......
  • Android 判断输入框是正在输入的拼音或词组。而不是最终的单词或短语
    Android输入框监听正在输入的拼音或词组需要结合输入法的特性,具体实现方式可能因输入法而异。在一些输入法中,可以通过InputConnection的getComposingText()方法获取正在输入的拼音或词组,而不是最终的单词或短语。在监听输入框内容变化时,可以在onTextChanged()回调中调用......
  • Android JAVA连接MQTT,以及常见问题
    本文介绍如何使用Android(JAVA)客户机连接MQTT服务器第一步先引入MQTT在 build.gradle添加以下:dependencies{implementation'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'}接下来演示如何连接创建MQTT客户机类 MqttConnect.classpublicclassMqtt......
  • Android-Service的生命周期
    原文地址blog.csdn.net与Activity类似,Service也有自己的生命周期函数,在不同的时刻,系统会调用对应的Service生命周期函数,不过与Activity声明周期相比,Service的声明周期更加简单,我们通过官方给出的一张图片来体会一下:Service作为Android四大组件之一,应用非常广泛。和Activit......
  • Android补间动画
    帧动画是通过连续播放图片来模拟动画效果,而补间动画开发者只需指定动画开始,以及动画结束"关键帧",而动画变化的"中间帧"则由系统计算并补齐!1.补间动画的分类和InterpolatorAndoird所支持的补间动画效果有如下这五种,或者说四种吧,第五种是前面几种的组合而已。AlphaAnimation:透明度渐......
  • 视频直播源码,android动画小飞机旋转效果
    视频直播源码,android动画小飞机旋转效果 //小飞机旋转动效果publicclassPlaneViewextendsView{  privatePaintpaint;  privateintwidth;  privateintheight;  privatefloatcurLength;  privatefloatallLength;  privatefloatmAnimato......
  • 铭瑄 USB 供电不足
    铭瑄USB供电不足 可能是USB固件开了节能,节能状态和某些设备会不兼容,更新固件试试固件链接:链接:https://pan.baidu.com/s/1RxHEddYe6TWMDlMJ3PQB1Q?pwd=xjkt提取码:xjkt 故障视频:https://www.bilibili.com/video/BV1Ck4y1a7My/?vd_source=097066e569d78097a96114b235f5a3d......
  • Android Automation
    启动虚拟机 emulator@pixel2-skip-adb-auth-allow-host-audio-port5554-no-snapshot-no-boot-anim-memory3072-partition-size8192启动Appium自动下载ChromeDriverappium--allow-insecurechromedriver_autodownload占位......