处理我的 Android 应用程序中的文本视图链接单击

2023-12-14

我目前正在 TextView 中渲染 HTML 输入,如下所示:

tv.setText(Html.fromHtml("<a href='test'>test</a>"));

显示的 HTML 是通过外部资源提供给我的,因此我无法随意更改内容,但我当然可以对 HTML 进行一些正则表达式篡改,以将 href 值更改为其他值。

我想要的是能够直接从应用程序内处理链接点击,而不是让链接打开浏览器窗口。这是可以实现的吗?我猜测可以将 href-value 的协议设置为“myApp://”之类的内容,然后注册一些让我的应用程序处理该协议的内容。如果这确实是最好的方法,我想知道这是如何完成的,但我希望有一种更简单的方法可以说,“当在此文本视图中单击链接时,我想引发一个接收事件链接的 href 值作为输入参数”


差不多一年后,我用一种不同的方式解决了我的特殊问题。由于我希望链接由我自己的应用程序处理,因此有一个更简单的解决方案。

除了默认的意图过滤器之外,我只是让我的目标活动监听ACTION_VIEW意图,特别是那些有该计划的人com.package.name

<intent-filter>
    <category android:name="android.intent.category.DEFAULT" />
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="com.package.name" />  
</intent-filter>

这意味着链接以com.package.name://将由我的活动处理。

所以我所要做的就是构建一个包含我想要传达的信息的 URL:

com.package.name://action-to-perform/id-that-might-be-needed/

在我的目标活动中,我可以检索此地址:

Uri data = getIntent().getData();

在我的例子中,我可以简单地检查data对于空值,因为只要它不为空,我就会知道它是通过这样的链接调用的。从那里,我从 URL 中提取所需的指令,以便能够显示适当的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理我的 Android 应用程序中的文本视图链接单击 的相关文章

  • Android:如何在多语言资源中重用字符串

    自从我的第一个 Android 项目以来 这个问题一直困扰着我 考虑以 en 作为默认值的多语言字符串资源 res values strings xml lt The default language en res values de st
  • 在styles.xml中设置所有按钮样式

    我想让我的应用程序有多种样式 样式更改按钮样式 文本视图颜色和布局背景颜色 我的按钮样式位于 xml 文件中 这是我的代码 style xml v21
  • Android Surface 与 Canvas 的关系

    Surface 和 Canvas 之间到底是什么关系 请解释 表面是一个缓冲区 画布保存绘图 视图未附加到画布 也不是表面 窗户被绑在 Surface 和 ViewRoot 询问 随后使用的画布表面 通过要绘制的视图 详细答案你可以阅读这篇
  • 删除SD卡上的文件夹

    I tried File delete 但它不起作用 如何删除SD卡上的目录 我正在开发 Android 2 1 在删除目录本身之前 您必须将所有目录清空 请参阅here http www rgagnon com javadetails j
  • 这样理解Activity类似于iOS中的ViewController就可以了吗?

    这样理解Activity类似于iOS中的ViewController就可以了吗 我很困惑接受 Android 中的术语概念 如 活动 服务 等 是的 我想说 Activity 和 ViewController 非常相似 只有一个很大的区别
  • 在我授予许可后,表面视图不显示相机

    public View onCreateView LayoutInflater inflater Nullable ViewGroup container Bundle savedInstanceState View view inflat
  • 使用 Delphi 10.2.1 Tokyo 的模态 Android 对话框

    我有以下用于在 Android 上显示模式消息的 Delphi 代码 该代码在 10 1 Berlin 上运行良好 但在 Delphi 10 2 1 Tokyo 上停止运行 此过程现在会挂起 Android 应用程序 procedure c
  • Android Facebook SDK 和 URL 方法成功形成好友对话框,但无法提交

    我开始认为这是一个错误 请证明我错了 我想以编程方式在 Facebook 上加好友 他们是唯一且肯定是该人在现实生活中认识的人 以下三种解决方案都具有相同的结果 成功的好友对话框 意味着个人资料名称 图片 指示操作的语句 与某人成为好友 以
  • Android“权限拒绝:无法使用相机”

    我正在学习有关在 Android 应用程序中使用相机的教程 我收到错误 权限被拒绝 无法使用相机 在模拟器和物理设备上运行调试时 我在清单文件中尝试了各种权限 似乎大多数遇到此错误的人都遇到了拼写错误 缺少权限或权限不在清单中的正确位置 这
  • Android 缩放和密度问题

    Update 一些研究表明 华硕 Transformer TF700T 高端 的像素密度应约为 224 因此 android 报告的 159 值要么是错误的 要么已被某种方式修改 system 中的 lcd 密度键 build prop 由
  • Android键盘点击搜索输入时出现和消失

    我在用谷歌地图 Js API当我搜索一个地方时 我的输入搜索栏工作正常 当我通过 iPhone 设备使用它时 它也工作得很好 但是当我通过Android 设备然后键盘立即出现和消失 我已经找到了一些关于当我按下搜索栏时 android 键盘
  • 如何在android中播放内部和外部SD卡中的mp3文件?

    我正在开发一个 mp3 播放器应用程序 它可以播放内部 SD 卡内任何位置的 mp3 文件 我使用以下代码来获取内部存储中存在的 mp3 文件 ArrayList
  • GpsStatusListener:尽管状态为 GpsStatus.GPS_EVENT_FIRST_FIX,但修复中未使用卫星

    我向我的位置管理器添加了一个 GPS 状态侦听器 以便查看何时获得第一个修复 当我收到 GPS EVENT FIRST FIX 时 我会循环遍历所有卫星 但为什么修复中没有使用它们 usedInFix 我的日志对所有卫星都显示 错误 fin
  • Textview 第一次点击时为空,但第二次点击时更新

    它是使用兼容性包的小型 Android 2 2 测试应用程序 我正在尝试更新列表项选择上另一个活动的另一个片段上的文本视图 但问题是 每次第一次单击都会返回空指针异常 并且只有在第二次尝试时 其文本才会更改 我想知道为什么会发生这种情况以及
  • 以编程方式卸载 Android 应用程序

    我希望能够允许我的用户从我的应用程序中卸载应用程序 就像 Google Play 商店允许其用户一样 请下图 主要问题是如何定义一个按钮 按下它我们可以通过提供包名称或其他一些信息来卸载应用程序 就像图像上的卸载按钮一样 try Inten
  • Android:了解 OnDrawFrame、FPS 和 VSync (OpenGL ES 2.0)

    一段时间以来 我在 Android 游戏中遇到了运动精灵间歇性 卡顿 的情况 这是一个非常简单的 2D OpenGL ES 2 0 游戏 这是一个持续存在的问题 我已经多次重新访问过 在我的游戏循环中 我有 2 个 计时器 一个用于记录前一
  • Android smoothScrollTo 不调用 onScrollStateChanged

    我在用smoothScrollBy 滚动到 a 中的特定位置ListView 我希望在以下情况时得到通知ListView完成滚动以将其与当前集成onScrollStateChanged 当用户用手指滚动时触发的事件 目前我正在使用Timer
  • API 24 AccessibilityService.dispatchGesture() 方法如何工作?

    通过 API 24 我们有了一种向设备发送手势的方法 但是目前还没有可靠的文档或示例 我正在尝试让它工作 但目前手势每次都会点击 onCancelled 回调 这是我调用该方法的代码 TargetApi 24 private void pr
  • Android - onLoadFinished 未调用

    我遇到了装载机的问题 我有一个活动 它显示从本地数据库检索的记录列表 当活动启动时 记录会通过 LoaderManager initLoader 方法自动加载 还可以通过 ActionBarSherlock 中的刷新按钮手动刷新列表 但是
  • Flutter 中 Android RecyclerView.SCROLL STATE IDLE 的等价物是什么

    Android 给出的滚动状态如下RecyclerView SCROLL STATE IDLE它告诉用户何时停止滚动 我找不到任何选择在颤动中Pageview or ListView滚动监听器 我的问题 我需要检测 PageView 中的向

随机推荐

  • 双向自我参照关联

    以 Ryan Bates 的 asciicast 为例 http asciicasts com episodes 163 self referential association 他以两个 User 关联结束 friends 逆朋友 鉴于用
  • 如何在 C# 中传递多个枚举值?

    有时 在阅读其他人的 C 代码时 我会看到一种方法在单个参数中接受多个枚举值 我一直以为它很整洁 但从未仔细研究过 好吧 现在我想我可能需要它 但不知道如何 设置方法签名以接受此方法 使用方法中的值 定义枚举 来实现这种事情 In my p
  • 在 android 中隐藏 Tablayout Bar

    我有一个活动toolbar Tablayout viewpager有碎片 像那样 I want to implement toolbar material search on all the fragments like that 但问题是
  • Android Studio 突然无法解析符号

    Android Studio 0 4 2 工作正常 今天我打开它 几乎所有内容都是红色的 并且自动完成功能已停止工作 我查看了导入 AS 似乎告诉我它找不到android support v4突然之间 为我提供了删除未使用的导入的选项 an
  • Java - 使用不带 lambda 表达式的谓词

    我有以下要求 员工 java public boolean isAdult Integer age if age gt 18 return true return false 谓词 java private Integer age Pred
  • 如何将 jQuery 插件功能限制为仅某些元素?

    我查看了 jQuery 插件网站 它教我如何编写基本插件 function fn maxHeight function var max 0 this each function max Math max max this height re
  • 合并多个精灵节点?

    例如 假设我有 2 个精灵节点 但也可以超过 2 个 如下所示 每个人都有自己独立的图像我想要的是将它们组合起来并用单个图像创建一个新的精灵节点 在工具模式下 like this 也许可以通过使用Image 毫无疑问涉及计算 或者也许使用一
  • 如何使用Python高效地在另一个字符串列表中搜索字符串列表?

    我有两个名称 字符串 列表 如下所示 executives Brian Olsavsky Some Guy Some Lady analysts Justin Post Some Dude Some Chick 我需要找到这些名称出现在如下
  • 当我使用 MKL 时,为什么 Tensorflow 会发出有关 AVX2 的警告?

    我正在使用具有 MKL 支持的 Tensorflow Anaconda 发行版 from tensorflow python framework import test util test util IsMklEnabled 这段代码打印T
  • 如何暂停和恢复 javascript 计时器 [重复]

    这个问题在这里已经有答案了 我有一个工作正常的计时器 但我需要能够暂停并在那之后恢复它 如果有人能帮助我 我将不胜感激
  • getUserMedia 在 Android Chrome 上冻结在第一帧

    我在桌面浏览器上有一个支持 getUserMedia Api 的工作代码 我可以在 div 中正确地看到网络摄像头的视频预览videoPreview 然而 当在 Android 设备上运行时 当我接受在 Chrome 浏览器中共享照片时 相
  • 在 JavaScript 中使用 JSON 将数组存储在 localStorage 中

    我已经参考了这个问题并为我工作 so q1 现在的问题是我使用 JSON stringify 和 JSON parse 将数组存储在 localStorage 中 但是 当我再次运行代码并尝试在 localStorage 上使用 JSON
  • JSF 2:未为错误页面呈现 Facelets 组合(模板)

    我在 Java EE 6 应用程序服务器 GlassFish v3 中使用 JSF 2 0 和 Facelets 我在 web xml 中配置了一个异常错误页面
  • Javascript Fullcalendar - 复制事件

    我在我的项目中使用 Fullcalendar http arshaw com fullcalendar 它通过 json 源获取事件 我想为用户提供将日历上的一个事件复制到另一天的选项 并且我想使用拖动来实现这一点 嗯 这是客户的要求 但拖
  • gmaps4rails 单标记自动缩放

    我正在尝试遵循答案here当地图上显示单个标记时缩小一点 默认情况下 我已经尝试了下面的代码 并生成了工作地图 但是更改 setZoom 没有效果 另外 我从 firebug 收到以下错误 下面的代码
  • 如何将 void* 转换为函数指针?

    我在 FreeRTOS 中使用 xTaskCreate 其第四个参数 void const 是传递给新线程调用的函数的参数 void connect to foo void const task params void on connect
  • 我如何知道 `git gc --auto` 是否做了什么?

    我在跑git gc auto作为自动保存脚本的一部分 我想进行进一步的清理 如果git gc auto已经做了一些事情 但我想避免麻烦 如果git gc auto感觉不需要做某事 有没有办法检查返回值git gc auto 或者事先检查是否
  • 如何将wav文件中的数据读取到数组

    我需要将 wav 文件的所有样本放入一个数组 或者两个 如果您需要这样做以保持立体声 以便我可以对它们进行一些修改 我想知道这是否容易完成 最好没有外部库 我没有阅读声音文件的经验 所以我对这个主题了解不多 这段代码应该可以解决问题 它将波
  • 未通过 Smart Lock API 在应用程序中检索到关联网站的密码

    I ve 关联我的 https 网站和应用程序以共享存储的凭据并收到了该协会已上线的确认信息 但是当我致电CredentialsApi request 方法在我的应用程序中 我无法从我的网站检索使用 Chrome 密码管理器保存的任何凭据
  • 处理我的 Android 应用程序中的文本视图链接单击

    我目前正在 TextView 中渲染 HTML 输入 如下所示 tv setText Html fromHtml a href test test a 显示的 HTML 是通过外部资源提供给我的 因此我无法随意更改内容 但我当然可以对 HT