Android:在自定义 Web 视图中检测并打开外部链接

Posted

技术标签:

【中文标题】Android:在自定义 Web 视图中检测并打开外部链接【英文标题】:Android: Detect and Open external links in custom web view 【发布时间】:2018-08-30 16:50:55 【问题描述】:

我付出了所有的努力仍然无法解决它,但我遇到了一个奇怪的问题。 问题是: 我有一个直接从Twitter 加载数据的文本视图。 Tweets 可能包含许多链接,它会显示在 textview 中,但在单击链接时,它们会在 android default browser 中打开。我想要做的是当用户点击任何链接how will I detect which link has been clickedopen my webview instead of default browser

这是我到目前为止所达到的:

    <TextView
    android:layout_
    android:layout_
    android:text="Hello www.google.com Thank You"
    android:autoLink="web"
    android:id="@+id/activity_main_textview"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

Java

TextView textView = (TextView) findViewById(R.id.activity_main_textview);
textView.setText("www.google.com is first link, www.facebook.com is second link, www.instagram.com is third link");
textView.setMovementMethod(LinkMovementMethod.getInstance());

【问题讨论】:

你检查***.com/questions/25629691/…了吗? Android TextView with Clickable Links: how to capture clicks?的可能重复 【参考方案1】:

在 WebView 所在的活动标记内的 Android 清单中添加:

<activity android:name=".WebViewActivity">
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="http"
        android:host="*" />

</intent-filter>
</activity>

在我做的 TextView 上:

<TextView
    android:id="@+id/link"
    android:layout_
    android:layout_
    android:text="http://www.google.com"
    android:autoLink="web"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

这对我有用。

【讨论】:

以上是关于Android:在自定义 Web 视图中检测并打开外部链接的主要内容,如果未能解决你的问题,请参考以下文章

在自定义键盘扩展中检测输入对象视图类型

在自定义表格单元格内检测多个 UI 视图的点击/触摸的理想方法是啥?

在自定义视图中获取 LinearLayout 参考

在自定义视图中获取android attr

Android:在自定义视图上使用android绑定点击事件

如何在自定义 Android 视图中检查重力标志?