当前位置: 首页 > news >正文

设置模块一级菜单添加遥控器功能

文章目录

  • 问题点
  • 问题分析
  • 资源和源码分析
  • 解决方案
  • 源码分析
    • 找到对应的Activity
    • menifest 分析
    • SettingsHomepageActivity 分析


问题点

MTK Android12/13 系统设置一级界面,蓝牙遥控器无法上下滑动页面。

备注:自己对设置整个模块系统其实并不熟悉,哪里有问题就直接针对问题来修复,更改。 还好都解决了,空了还是需要研究下源码,整体架构思想上掌握。

问题分析

这个明显是焦点问题,Settings 理论上 布局是能够上下滑动的【RecycleView Scrollview】

资源和源码分析

这里可以看我提供的附件:附件地址
MTK 对应的Android13 设置的SettingsHomepageActivity.java和笔记
在线源码地址:

解决方案


修改文件:SettingsHomepageActivity.java
路径:\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\homepage\SettingsHomepageActivity.java

修改内容:

    private void initHomepageContainer() {final View view = findViewById(R.id.homepage_container);// Prevent inner RecyclerView gets focus and invokes scrolling.//modify start // view.setFocusableInTouchMode(true);// view.requestFocus();//modify end}

源码分析

找到对应的Activity

以前进入设置界面,都是敲命令

 adb shell am start com.android.settings/.Settings 

那理论上就是找Settings 这个Activity了;通过dumps activity top | grep Activity 得到的也是Settings 的。

 C:\Users\Administrator>adb shell
DisPlay:/ # dumpsys activity top | grep ACTIVITYACTIVITY com.fise.dmseries/.ui.main.MainActivity 37d25e pid=1980ACTIVITY com.android.settings/.Settings 5865ddb pid=1498
DisPlay:/ #

menifest 分析

找到Settings

 <!-- Alias for launcher activity only, as this belongs to each profile. --><activity-alias android:name="Settings"android:label="@string/settings_label_launcher"android:taskAffinity="com.android.settings.root"android:launchMode="singleTask"android:exported="true"android:targetActivity=".homepage.SettingsHomepageActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/></activity-alias>
这里说明 Settings 只是一个 activity-alias ,真正指向到 homepage.SettingsHomepageActivity

那就到activity SettingsHomepageActivity 配置看看

<activity android:name=".homepage.SettingsHomepageActivity"android:label="@string/settings_label_launcher"android:theme="@style/Theme.Settings.Home"android:taskAffinity="com.android.settings.root"android:launchMode="singleTask"android:exported="true"android:configChanges="keyboard|keyboardHidden"><intent-filter android:priority="1"><action android:name="android.settings.SETTINGS" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"android:value="true" /></activity>

上面配置分析Settings、SettingsHomepageActivity 说明清楚了:
Settings 正在的主界面是SettingsHomepageActivity, Settings 只是设置app 主界面的一个别名 alias。
能够通过命令adb shell am start -n com.android.settings/.Settings 来调用

SettingsHomepageActivity 分析

关注下这个方法:

 private void initHomepageContainer() {final View view = findViewById(R.id.homepage_container);// Prevent inner RecyclerView gets focus and invokes scrolling.view.setFocusableInTouchMode(true);view.requestFocus();}

看注释: // Prevent inner RecyclerView gets focus and invokes scrolling.
就是说阻止内部的RecycleView 获取焦点然后滑动

看着像这个原因导致的,那就把它去掉,重新编译固件,发现解决问题了。

http://www.lryc.cn/news/520478.html

相关文章:

  • Blazor中Syncfusion Word组件使用方法
  • HTB:Driver[WriteUP]
  • 微信小程序-Docker+Nginx环境配置业务域名验证文件
  • 55_OpenResty开发入门
  • Windows安装Jenkins——及修改主目录、配置简体中文、修改插件源
  • 大数据环境搭建进度
  • 第27章 汇编语言--- 设备驱动开发基础
  • Apache Hop从入门到精通 第二课 Apache Hop 核心概念/术语
  • Vue2+OpenLayers使用Overlay实现点击获取当前经纬度信息(提供Gitee源码)
  • 英语互助小程序springboot+论文源码调试讲解
  • 中等难度——python实现电子宠物和截图工具
  • 深入Android架构(从线程到AIDL)_22 IPC的Proxy-Stub设计模式04
  • 【MySQL数据库】基础总结
  • 49_Lua调试
  • vue的KeepAlive应用(针对全部页面及单一页面进行缓存)
  • lwip单网卡多ip的实现
  • // Error: line 1: XGen: Candidate guides have not been associated!
  • 第21篇 基于ARM A9处理器用汇编语言实现中断<三>
  • mac homebrew配置使用
  • 慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(三)
  • 【redis初阶】环境搭建
  • salesforce sandbox的用户如何重置密码
  • 做一个 简单的Django 《股票自选助手》显示 用akshare 库(A股数据获取)
  • 01、kafka知识点综合
  • 怎么用python写个唤醒睡眠电脑的脚本?
  • 【Linux】Linux开发:GDB调试器与Git版本控制工具指南
  • Git 的引用规格(refspec)语法
  • 反转链表题目
  • LED灯按键调光芯片、PWM调光IC、发光灯控制调光芯片
  • Android Room 报错:too many SQL variables (code 1 SQLITE_ERROR) 原因及解决方法