如何在 Android 应用程序中启动亚马逊购物应用程序?

How to launch Amazon Shopping app in Android app?

我希望能够从我的 android 应用程序启动 A​​mazon Shopping 应用程序。这怎么可能? Intent 需要哪些参数?这是亚马逊购物应用程序的 link:https://play.google.com/store/apps/details?id=com.amazon.mShop.android.shopping&hl=en

此外,如何传递一个深度link参数,使其到达特定的产品页面?谢谢!

I'd like to be able to launch the Amazon Shopping app from my android application. How is this possible? What parameters would need to go into the Intent?

您可以使用PackageManager#getLaunchIntentForPackage

startActivity(getPackageManager().getLaunchIntentForPackage("com.amazon.mShop.android.shopping"));

In addition, how would it be possible to pass a deep-link parameter so that it lands on a specific product page?

这取决于亚马逊应用程序是否实施深度 link 并将 intent-filter 公开给外部应用程序。我想这是不可能的,但也许你可以问问亚马逊。

使用问题

startActivity(getPackageManager().getLaunchIntentForPackage("com.amazon.mShop.android.shopping"));

是假设用户安装了 android 应用程序。如果它不存在,它将失败。所以,我决定使用 uri。我的第一次尝试是使用亚马逊文档 Link to Amazon from within Your App

但是效果不是很好。看起来它只搜索应用程序,而不是所有产品。当我尝试对非应用程序产品使用 asin 参数时,它不起作用。所以我做了以下操作,它给了我想要的东西。

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.amazon.com/Red-blue-Anaglyph-3D-Glasses-game-Extra/dp/B003LWYGPE/ref=pd_sim_23_1?_encoding=UTF8&pd_rd_i=B003LWYGPE&pd_rd_r=3REW4891981B4R6WAB66&pd_rd_w=NcbkD&pd_rd_wg=GDhOT&psc=1&refRID=3REW4891981B4R6WAB66"));
    startActivity(browserIntent);

它在浏览器中打开了搜索,并带有打开应用程序的选项。我想可以先尝试亚马逊应用程序路线,如果失败,请打开此浏览器版本。

如果你想深入链接到详情页面,首先你应该找到亚马逊的 product_id。并尝试这个方案:

com.amazon.mobile.shopping://content/item?id=<some valid id>

此处尝试的所有代码是:

 jumpUrl?.let { it ->
                try {
                    val intent = Intent(Intent.ACTION_VIEW)
                    val findStr = "/dp/"
                    val findIndex = it.indexOf(findStr)
                    if (findIndex != -1) {
                        intent.data = Uri.parse(
                            "com.amazon.mShop.android.shopping://www.amazon.com/products/${
                                it.substring(
                                    findIndex + findStr.length
                                )
                            }"
                        )
                    } else {
                        intent.data = Uri.parse(it)
                    }
                    intent.flags = intent.flags or Intent.FLAG_ACTIVITY_NEW_TASK
                    intent.let { tent ->
                        context.startActivity(
                            tent
                        )
                    }
                } catch (exception: ActivityNotFoundException) {
                    exception.printStackTrace()
                    val intent = Intent(Intent.ACTION_VIEW)
                    intent.data = Uri.parse(it)
                    intent.flags = intent.flags or Intent.FLAG_ACTIVITY_NEW_TASK
                    context.startActivity(intent)
                }
            }

我的参考文献是:iPhone iOS Amazon Scheme / URI Not Working Anymore amzn:// version 4.3.1 Deep Linking