我目前正在 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(使用前将#替换为@)