如何在Android上的应用程序中打开链接

时间:2016-10-10 08:14:14

标签: android deep-linking

当我从社交媒体网站点击我的网站帖子时,我想在我的应用程序中打开这篇文章(内容)而不是在网络浏览器中打开。

例如:点击www.example.com/news/365时,将此帖子打开到我的应用程序中。

我将此代码添加到了清单中:

<activity android:name=".singleVideo.view.SingleVideoActivity">

    <intent-filter android:autoVerify="true">

        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="www.example.com"
            android:pathPrefix="/news"
            android:scheme="http" />

    </intent-filter>

</activity>

我在活动中添加了这些代码:

Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();

现在当我点击此链接:www.example.com/news/365时,它会打开我的应用程序,但它不显示帖子内容(标题,图片,说明等等)。

我该怎么办?请帮帮我。

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用data.getPath()方法。

将返回365 (也许..阅读文件。https://developer.android.com/reference/android/net/Uri.html

并使用您的API(REST API)!

如果你没有API。只需制作或使用HTML解析库。 (比如jsoup https://jsoup.org

答案 1 :(得分:0)

这称为深度链接。

在网络上,网址www.example.com/news/365只是您的网络浏览器用于请求特定HTML文档的地址。此HTML文档包含用于定义加载时将显示的内容的代码。地址www.example.com/news/365本身并不包含任何内容。

通过将这些代码段添加到您的应用的“清单和活动”中,除了网络上的特定HTML网页之外,您还将地址www.example.com/news/365与应用内的特定活动相关联。这意味着如果您的应用程序已安装并且该地址已打开,则在Web浏览器或您的应用程序中打开地址之间,将为用户提供选择(如果autoVerify配置已正确实施,则可以选择)。但是,了解www.example.com/news/365 仍然不包含任何内容非常重要。就您的应用而言,这只是一个空位。您仍然需要检索地址并使用它来确定要向用户显示的图像/标题/描述。

如果不了解您的应用和API设置方式的完整详细信息,那么实际上不可能为您提供示例代码。官方Android deep linking guide是一个很好的起点。

或者,您可以查看一个深层链接平台,例如Branch.io(完全披露:我在分支团队中),这使得所有这一切变得更加简单,因为您需要做的就是通过每个链接都有key:value对的集合。即使应用尚未安装,我们也会让您的链接正常工作,这称为延迟深层链接