有pc网站公众号软文推广

张小明 2026/3/2 19:54:35
有pc网站,公众号软文推广,分销网站建设方案,在微信上做彩票网站吗提示#xff1a; 最近有个客户自己做了WebView 加载HTML的网页#xff0c;长按WebView 网页后显示了菜单选项#xff0c;其中一个就是分享功能。让把它去掉#xff0c;后面又让把所有的分析菜单去掉 文章目录前言一、需求二、参考文档三、修改文件四、效果演示五、实现方案…提示 最近有个客户自己做了WebView 加载HTML的网页长按WebView 网页后显示了菜单选项其中一个就是分享功能。让把它去掉后面又让把所有的分析菜单去掉文章目录前言一、需求二、参考文档三、修改文件四、效果演示五、实现方案实现方案实现思路推荐六、代码跟踪1、找到浮动组件-frameworks/base/core/java/com/android/internal/widget/floatingtoolbar2、floatingtoolbar 包下类架构分析FloatingToolbarPopup 定义接口FloatingToolbar 水平包裹的工具类-负责展示menu itemsLocalFloatingToolbarPopup 负责实际 popup window的工具类-对用户展示3 、FloatingToolbar 源码分析查看 doShow getVisibleAndEnabledMenuItems 方法如下查看日志打印4 、 查找资源文件-过滤操作总结前言一、需求Android 系统去解决长按显示内容去掉分享功能不论那个界面是所有界面都需要满足。需求如果仅仅去掉系统自带的那么系统来处理如果客户自定义部分App自定义的菜单项不是调用系统的那么还是需要应用去解决的。之前做过Editext其实还需要去TextView最难点的就是WebView中的HTML了 去分享功能了。如下WebView中涉及到分享功能菜单的界面二、参考文档自己之前的笔记RK-3576-Android15屏蔽EditText的长按分享菜单的功能 涉及到另外一个组件TextView 的屏蔽 功能和Editext 修改方案一模一样。其它参考资料比较有建设性但是要付费 参考下然后自己分析下代码实现呗但是千万不要相信别人的建议实际效果都需要自己不断查阅资料、定位源码、分析源码、反复实践调试 才行。Android 10.0 framework去掉长按webview界面弹框中的 打开 字符串Android 14.0 framework去掉长按webview界面弹框中的打开字符串三、修改文件frameworks/base/core/java/com/android/internal/widget/floatingtoolbar/FloatingToolbar.java四、效果演示五、实现方案实现方案在frameworks/base/core/java/com/android/internal/widget/floatingtoolbar/FloatingToolbar.java中的getVisibleAndEnabledMenuItems方法中过滤掉分享菜单即可。实际代码改成如下/** * Returns the visible and enabled menu items in the specified menu. * This method is recursive. */privatestaticListMenuItemgetVisibleAndEnabledMenuItems(Menumenu){Log.d(TAG,getVisibleAndEnabledMenuItems);ListMenuItemmenuItemsnewArrayList();for(inti0;(menu!null)(imenu.size());i){MenuItemmenuItemmenu.getItem(i);if(menuItem.isVisible()menuItem.isEnabled()){MenusubMenumenuItem.getSubMenu();if(subMenu!null){Log.d(TAG,menuItems.addAll(getVisibleAndEnabledMenuItems(subMenu)));menuItems.addAll(getVisibleAndEnabledMenuItems(subMenu));}else{Log.d(TAG,getVisibleAndEnabledMenuItems menuItems.add(menuItem)menuItem.getTitle() menuItem.getTooltipText());if(menuItem.getTitle().equals(mTWindow.getContext().getResources().getString(com.android.internal.R.string.share))){Log.d(TAG,now is share not add menuItem);continue;}menuItems.add(menuItem);}}}returnmenuItems;}实现思路推荐dumsys堆栈打印查找难找的组件信息dumpsys window查找share 相关的ID、字符串信息通过\frameworks\base\core\res\res中的values查找关键字反向grep查找网上多看看资料吧FloatingToolbar六、代码跟踪1、找到浮动组件-frameworks/base/core/java/com/android/internal/widget/floatingtoolbar相关说明在 RK-3576-Android15屏蔽EditText的长按分享菜单的功能 笔记中 有了解过系统的基本组件都在frameworks/base/core/java/com/android/internal/widget目录下 所以我们最开始的思路 就应该在这个包名下面找对应的基本组件但是我们遇到第一个问题没法像之前那样 通过 关键字段、关键方法 搜索到对应相关信息。大家看实际效果是不是很像poppupwindows实际打印堆栈信息真的好多Windows相关的信息floatingtoolbar就是一个浮动组件实现了这个菜单功能。2、floatingtoolbar 包下类架构分析当我分析到这里的时候我就感觉找到位置了分析代码然后更改即可实现需求FloatingToolbarPopup 定义接口/** * A popup window used by the {link FloatingToolbar} to render menu items. * */publicinterfaceFloatingToolbarPopup{/** * Sets the suggested dp width of this floating toolbar. * The actual width will be about this size but there are no guarantees that it will be exactly * the suggested width. */voidsetSuggestedWidth(intsuggestedWidth);/** * Sets if the floating toolbar width changed. */voidsetWidthChanged(booleanwidthChanged);/** * Shows this popup at the specified coordinates. * The specified coordinates may be adjusted to make sure the popup is entirely on-screen. */voidshow(ListMenuItemmenuItems,MenuItem.OnMenuItemClickListenermenuItemClickListener,RectcontentRect);/** * Gets rid of this popup. If the popup isnt currently showing, this will be a no-op. */voiddismiss();/** * Hides this popup. This is a no-op if this popup is not showing. * Use {link #isHidden()} to distinguish between a hidden and a dismissed popup. */voidhide();/** * Returns {code true} if this popup is currently showing. {code false} otherwise. */booleanisShowing();/** * Returns {code true} if this popup is currently hidden. {code false} otherwise. */booleanisHidden();/** * Makes this toolbar outside touchable and sets the onDismissListener. * * param outsideTouchable if true, the popup will be made outside touchable and * non focusable. The reverse will happen if false. * param onDismiss * * return true if the outsideTouchable setting was modified. Otherwise returns false * * see PopupWindow#setOutsideTouchable(boolean) * see PopupWindow#setFocusable(boolean) * see PopupWindow.OnDismissListener */booleansetOutsideTouchable(booleanoutsideTouchable,NullablePopupWindow.OnDismissListeneronDismiss);/** * Returns {link LocalFloatingToolbarPopup} implementation. */staticFloatingToolbarPopupcreateInstance(Contextcontext,Viewparent){returnnewLocalFloatingToolbarPopup(context,parent);}}FloatingToolbar 水平包裹的工具类-负责展示menu items/** * A floating toolbar for showing contextual menu items. * This view shows as many menu item buttons as can fit in the horizontal toolbar and the * the remaining menu items in a vertical overflow view when the overflow button is clicked. * The horizontal toolbar morphs into the vertical overflow view. */publicfinalclassFloatingToolbar{LocalFloatingToolbarPopup 负责实际 popup window的工具类-对用户展示/** * A popup window used by the floating toolbar to render menu items in the local app process. * * This class is responsible for the rendering/animation of the floating toolbar. * It holds 2 panels (i.e. main panel and overflow panel) and an overflow button * to transition between panels. */publicfinalclassLocalFloatingToolbarPopupimplementsFloatingToolbarPopup{3 、FloatingToolbar 源码分析先观察类的一些方法有个直观感受然后打印日志方便查找问题。查看doShowgetVisibleAndEnabledMenuItems方法如下所以去打印部分信息查看日志打印进一步验证了就是在这里添加的那么过滤掉就可以了4 、 查找资源文件-过滤操作这里有两部分工作查找资源文件 分享的字符串 表示字符串在Framework中的获取来实现匹配 过滤操作java/android/widget/TextView.java:14238:getResources().getString(com.android.internal.R.string.share)));java/android/widget/Editor.java:3314:com.android.internal.R.string.share)java/android/widget/Editor.java:3372:com.android.internal.R.string.share)java/android/widget/Editor.java:4776:com.android.internal.R.string.share)java/android/widget/ShareActionProvider.java:179:R.string.shareactionprovider_share_with_application);java/android/widget/ShareActionProvider.java:181:R.string.shareactionprovider_share_with);但是 我们匹配的是字符串所有要不 字符串id 转字符串表示然后匹配再过滤。总结遇到难找的界面、难找的组件、难定位的UI 直接dumpsys 堆栈找找看多分析应该在哪里找源码、然后多查阅资料grep 查找、关键字查找、找关键信息实实在在多看看源码、并实际调试吧
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

宁波市有哪些网站建设公司推广业务网站建设

Qdrant向量数据库:构建跨模态智能搜索系统的核心技术解析 【免费下载链接】qdrant Qdrant - 针对下一代人工智能的高性能、大规模向量数据库。同时提供云端版本 项目地址: https://gitcode.com/GitHub_Trending/qd/qdrant 在人工智能应用日益普及的今天&…

张小明 2026/2/27 15:34:33 网站建设

电商平台建站网页设计作业代做

课题介绍基于 SpringBoot 的机票预定系统,直击 “机票查询筛选低效、订单处理流程繁琐、退改签规则不透明、数据管控缺失” 的核心痛点,依托 SpringBoot 轻量级框架优势,构建 “机票查询 订单管理 退改签处理 数据运营” 的一体化预定平台…

张小明 2026/1/10 6:57:52 网站建设

句容网站建设公司超市网站规划

大家好,我是顾北!你有没有这种体验,以前改图,要么使用 PS 操作,要么修改冗余的提示词反复进行抽卡,最令人头疼的是,改完后图片很难达到你的心理预期。但在这两天,高强度使用Nano Ban…

张小明 2026/1/4 7:15:36 网站建设

怎么申请 免费网站四川省建行网站

Pot-Desktop终极指南:跨平台翻译软件完整安装与使用教程 【免费下载链接】pot-desktop 🌈一个跨平台的划词翻译和OCR软件 | A cross-platform software for text translation and recognition. 项目地址: https://gitcode.com/GitHub_Trending/po/pot-…

张小明 2026/1/4 5:37:05 网站建设

大连网站建设选网龙南京外贸网站建站

浏览器AI失控怎么办?WebLLM日志处理器精准干预指南 【免费下载链接】web-llm 将大型语言模型和聊天功能引入网络浏览器。所有内容都在浏览器内部运行,无需服务器支持。 项目地址: https://gitcode.com/GitHub_Trending/we/web-llm 你是否遇到过这…

张小明 2026/1/7 20:08:57 网站建设

绍兴市柯桥区建设局网站山东专业网站建设哪家便宜

震惊!这家酶制剂生产商竟靠这3点征服市场在竞争日趋白热化的生物技术领域,特别是酶制剂这一细分市场,企业若想脱颖而出,不仅需要过硬的技术,更需要一套独特的市场战略。近年来,一家名为上海华上翔洋生物技术…

张小明 2026/1/9 6:06:39 网站建设