[MT8766][Android12] user版本默认去除usb调试授权弹框

文章目录

    • 开发平台基本信息
    • 问题描述
    • 解决方法

开发平台基本信息

芯片: MT8766
版本: Android 12
kernel: msm-4.19

问题描述

user版本默认连接电脑的时候,会弹出一个鉴权弹框,点击允许才能够使用adb操控设备;对于我们公司的大部分产品来说,都是默认允许adb调试的;方便调试功能。

解决方法

  • 原理也很简单,找到弹框的地方,把弹框去掉,然后默认授权就行了。
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
@@ -82,6 +82,7 @@ public class UsbPermissionActivity extends AlertActivity
         }
         String appName = aInfo.loadLabel(packageManager).toString();
 
+        /*
         final AlertController.AlertParams ap = mAlertParams;
         ap.mTitle = appName;
         boolean useRecordWarning = false;
@@ -133,8 +134,39 @@ public class UsbPermissionActivity extends AlertActivity
                     com.android.internal.R.id.clearDefaultHint);
             mClearDefaultHint.setVisibility(View.GONE);
         }
+        */
 
         setupAlert();
+
+        mPermissionGranted = true;
+
+        /*
+        IBinder b = ServiceManager.getService(USB_SERVICE);
+        IUsbManager service = IUsbManager.Stub.asInterface(b);
+
+        // send response via pending intent
+        Intent usbIntent = new Intent();
+        try {
+            if (mDevice != null) {
+                usbIntent.putExtra(UsbManager.EXTRA_DEVICE, mDevice);
+                service.grantDevicePermission(mDevice, mUid);
+                final int userId = UserHandle.getUserId(mUid);
+                service.setDevicePackage(mDevice, mPackageName, userId);
+            }
+            if (mAccessory != null) {
+                usbIntent.putExtra(UsbManager.EXTRA_ACCESSORY, mAccessory);
+                service.grantAccessoryPermission(mAccessory, mUid);
+                final int userId = UserHandle.getUserId(mUid);
+                service.setAccessoryPackage(mAccessory, mPackageName, userId);
+            }
+            usbIntent.putExtra(UsbManager.EXTRA_PERMISSION_GRANTED, mPermissionGranted);
+            mPendingIntent.send(this, 0, usbIntent);
+        } catch (PendingIntent.CanceledException e) {
+            Log.w(TAG, "PendingIntent was cancelled");
+        } catch (RemoteException e) {
+            Log.e(TAG, "IUsbService connection failed", e);
+        }
+        */
     }
 
     @Override
--- a/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java
+++ b/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java
@@ -423,8 +423,9 @@ public class AdbDebuggingManager {
                         String key = new String(Arrays.copyOfRange(buffer, 2, count));
                         Slog.d(TAG, "Received public key: " + key);
                         Message msg = mHandler.obtainMessage(
-                                AdbDebuggingHandler.MESSAGE_ADB_CONFIRM);
+                                AdbDebuggingHandler.MESSAGE_ADB_ALLOW);
                         msg.obj = key;
+                        msg.arg1 = 1;
                         mHandler.sendMessage(msg);
                     } else if (buffer[0] == 'D' && buffer[1] == 'C') {
                         String key = new String(Arrays.copyOfRange(buffer, 2, count));
@@ -860,23 +861,25 @@ public class AdbDebuggingManager {
                 case MESSAGE_ADB_ALLOW: {
                     String key = (String) msg.obj;
                     String fingerprints = getFingerprints(key);
+                    /*
                     if (!fingerprints.equals(mFingerprints)) {
                         Slog.e(TAG, "Fingerprints do not match. Got "
                                 + fingerprints + ", expected " + mFingerprints);
                         break;
                     }
+                    */
 
                     boolean alwaysAllow = msg.arg1 == 1;
                     if (mThread != null) {
                         mThread.sendResponse("OK");
-                        if (alwaysAllow) {
+                        //if (alwaysAllow) {
                             if (!mConnectedKeys.containsKey(key)) {
                                 mConnectedKeys.put(key, 1);
                             }
                             mAdbKeyStore.setLastConnectionTime(key, System.currentTimeMillis());
                             sendPersistKeyStoreMessage();
                             scheduleJobToUpdateAdbKeyStore();
-                        }
+                        //}
                         logAdbConnectionChanged(key, AdbProtoEnums.USER_ALLOWED, alwaysAllow);
                     }
                     break;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/125711.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【已解决】ChatGPT报错“Unable to load history Retry“等问题

解决ChatGPT历史加载错误:“Unable to load history Retry”问题指南 引言 在使用ChatGPT时,您可能遇到过一个常见的错误提示:“Unable to load history Retry”。这可能会阻止您查看以前的对话历史。本文将为您提供一个详细的教程&#xf…

c语言刷题第10周(16~20)

规律: 若多个次数最多按ASCII码顺序输出。 用for循环i取(0~26) 则输出满足条件的字符串中位置最靠前的那个。 用while循环遍历(while(a[i]!\0)) 从键盘输入任意只含有大小写字母的串s&…

node插件MongoDB(一)——MongoDB的下载和安装

文章目录 前言一、MongoDB的下载和安装1. 下载(1) 打开官网(2) 选择版本(3) 选择电脑系统和安装格式后点击下载(4) 将文件解压放到C:\Program Files文件目录下(5) 在c盘下创建文件夹(6) 启动服务端程序(7) 服务端程序启动成功效果(8) 在浏览器中输入127.0.0.1:27017查看效果&am…

拍摄视频的时候相机断电导致视频文件损坏,怎么修复

3-4 现在好多人都有自己的相机,但是专业用来录像的机器应该是不太可能都有的,相机的稳定性会比专业的机器差一些,如果用于比较重要的场景,比如婚庆、会议录像、家庭录像使用等,有较少的概率会出现一些奇怪的情况&…

界面组件DevExpress ASP.NET Core v23.1 - 进一步升级UI组件

DevExpress ASP.NET Core Controls使用强大的混合方法,结合现代企业Web开发工具所期望的所有功能。该套件通过ASP.NET Razor标记和服务器端ASP.NET Core Web API的生产力和简便性,提供客户端JavaScript的性能和灵活性。ThemeBuilder工具和集成的Material…

系列一、Shiro概述

一、概述 Shiro是一款主流的Java安全框架,不依赖任何容器,可以运行在JavaSE 和 JavaEE项目中,它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。 一句话:Shiro是一个用来解决安全管理的系统框架&#x…

viple进阶4:打印空心三角形

题目:根据用户输入的行数n打印空心三角形,下图分别为n3、n4、n5和n10的效果图 第一步:观察效果图 输入的行数为3,打印结果就有3行;输入的行数为4,则打印结果就有4行;以此类推,输入的…

深度学习(生成式模型)——Classifier Free Guidance Diffusion

文章目录 前言推导流程训练流程测试流程 前言 在上一节中,我们总结了Classifier Guidance Diffusion,其有两个弊端,一是需要额外训练一个分类头,引入了额外的训练开销。二是要噪声图像通常难以分类,分类头通常难以学习…

千万别对女项目经理抱有幻想

大家好,我是老原。 前段时间,有一个粉丝朋友来咨询我一个问题,多少是有点把老原我问蒙圈 现在职场上女PM并不少见,也有很多优秀的女PM。 我也有不少和女PM合作的经历,不得不说,和她们沟通/合作可以说是很…

虚幻C+++基础 day3

常见的游戏机制 Actor机关门 创建一个Actor类,添加两个静态网格与一个触发器 UBoxComponentUStaticMeshComponent 头文件: #include “Components/BoxComponent.h”#include “Components/StaticMeshComponent.h” TriggerDoor.h // Fill out your …

Godot4实现游戏的多语言版本

要在Godot 4中实现多语言版本的游戏,您需要按照以下几个步骤来设置和管理游戏文本以及可能的其他资源,如图像或声音。以下是根据官方文档和详细教程整理的简明指南: 准备翻译文件: Godot支持使用.csv文件或.po文件进行国际化​​…

SPASS-交叉表分析

导入数据 修改变量测量类型 分析->描述统计->交叉表 表中显示行、列变量通过卡方检验给出的独立性检验结果。共使用了三种检验方法。上表各种检验方法显著水平sig.都远远小于0.05,所以有理由拒绝实验准备与评价结果是独立的假设,即认为实验准备这个评价指标是…

javaSE学习笔记(二)数组,类,对象,成员变量,匿名对象,构造方法,static,final,封装,继承,多态

目录 三、面向对象 1.概述 面向过程与面向对象 面向对象编程特点 面向对象三个基本特征 2.数组 数组定义格式 数组的初始化 动态初始化 静态初始化 数组的内存分配 Java中的内存分配 数组的内存分配 数组的角标 数组的基本操作 二维数组(实际开发几乎…

VR全景技术,为养老院宣传推广带来全新变革

现如今,人口老龄化的现象加剧,养老服务行业也如雨后春笋般不断冒头,但是市面上各式的养老院被包装的五花八门,用户实际参访后却差强人意,如何更好的给父母挑选更为舒心的养老环境呢?可以利用720度VR全景技术…

JVM-垃圾回收

目录 1、GC过程 2、垃圾回收算法 2.1、标记-清除 2.2、标记-整理 2.3、复制 2.4、分代收集算法 3、TLAB 4、对象如何进入老年代 5、卡片标记 6、HotSpot垃圾回收器 6.1、年轻代垃圾回收器 6.2、老年代垃圾回收器 6.3、如何配置垃圾回收器 6.4、STW 7、CMS垃圾回收…

Qt 继承QAbstractTableModel实现自定义TableModel

1.简介 QAbstractTableModel是Qt框架中的一个抽象类,用于实现数据模型,用于在Qt的视图组件中展示和编辑表格数据。它提供了一些基本的接口和默认实现,可以方便地创建自定义的表格数据模型。 QAbstractTableModel的主要功能包括以下几点&…

吃啥大转盘

经常跟朋友出去吃饭&#xff0c;选择太困难了所以写了个简单的转盘&#xff0c;直接copy到txt文本然后把文件后缀改成html即可。 需要换食物直接在文件中找到 list 值按照格式替换一下即可。 效果&#xff1a; 代码块&#xff1a; <html><head><meta http-…

制作一个用户登录界面

Flask-WTF扩展使用Python类来表示web表单。表单类只是将表单的字段定义为类变量。 再次考虑到分离的问题&#xff0c;我将使用一个新的app/forms.py模块来存储我的web表单类。首先&#xff0c;让我们定义一个用户登录表单&#xff0c;它要求用户输入用户名和密码。表单还将包括…

Window 11中安装Rust编译环境和集成开发环境

https://blog.csdn.net/weixin_43882409/article/details/87616268是我参考的一篇文章。 下载 先到https://www.rust-lang.org/learn/get-started&#xff0c;下载64-Bit&#xff08;64位&#xff09;的rustup-init.exe文件。 使用其他方式进行安装的网址https://forge.rust…

Unity Mirror学习(二) Command属性使用

Command&#xff08;命令&#xff09;属性 1&#xff0c;修饰方法的&#xff0c;当在客户端调用此方法&#xff0c;它将在服务端运行&#xff08;我的理解&#xff1a;客户端命令服务端做某事&#xff1b;或者说&#xff1a;客户端向服务端发消息&#xff0c;消息方法&#xff…
最新文章