Android使用whatsapp共享深层链接网址并在点击深层链接时打开我的应用

时间:2016-02-03 10:53:11

标签: android whatsapp deep-linking

我正在使用whatsapp共享一些数据,当用户从whatsapp按下深层链接时,我想在我的应用中打开一个特定的活动

我有以下架构

myapp://openapp?type=banner&id=10

whatsapp将该链接作为普通文本而非网址共享,并且当用户按下时我也无法打开我的应用

任何人都可以帮忙吗?

修改

这是我的分享方法

public static void openWhatsApp(Context mContext) {

        PackageManager pm = mContext.getPackageManager();
        try {

            Intent whatsAppIntent = new Intent(Intent.ACTION_SEND);
            whatsAppIntent.setType("text/plain");

            String text = "myapp://openapp?type=banner&id=10";

            PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
            whatsAppIntent.setPackage("com.whatsapp");

            whatsAppIntent.putExtra(Intent.EXTRA_TEXT, text);
            mContext.startActivity(Intent.createChooser(whatsAppIntent, mContext.getString(R.string.share_with)));

       } catch (NameNotFoundException e) {
            Toast.makeText(mContext, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
       }
}

2 个答案:

答案 0 :(得分:3)

我不知道是否可能。 WhatsApp可能只突出显示某些协议(即http,https)的链接。在这种情况下,如果您依赖此功能,则可以进行解决方法:

让用户分享指向http://your-server.com/forward?type=banner&id=10

的链接

your-server.com上,您将forward文件中的用户(或通过服务器配置)重定向到myapp://openapp?type=banner&id=10

当然这不是很好,但浏览器可以处理这些应用程序链接。这不会很好,因为用户将首先打开浏览器来处理您的http链接,用户将从该链接重定向。

答案 1 :(得分:0)

我遇到的问题完全相同。 使用Android App-Links似乎是正确的解决方案。 来自文档: https://developer.android.com/training/app-links/verify-site-associations.html#request-verify

深层链接和应用链接之间的区别:

  • 深层链接是一种意图过滤器,可让用户直接在Android应用中输入特定活动。 (你试图使用这个,但是Whatsapp并没有认识到这是一个链接)
  • Android App Link 是基于您的网站网址的深层链接,该网址已经过验证,属于您的网站。 (这是一个普通的http(s)链接,它应该被识别为无处不在)