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

Posted

技术标签:

【中文标题】如何在 Android 应用中启动亚马逊购物应用?【英文标题】:How to launch Amazon Shopping app in Android app? 【发布时间】:2016-02-23 13:58:33 【问题描述】:

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

此外,如何传递深层链接参数以使其到达特定的产品页面?谢谢!

【问题讨论】:

【参考方案1】:

我希望能够从我的安卓系统启动亚马逊购物应用 应用。这怎么可能?需要什么参数 进入意图?

您可以使用PackageManager#getLaunchIntentForPackage

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

另外,怎么可能传递一个深层链接参数,所以 它登陆特定的产品页面?

这取决于亚马逊应用程序是否实现深度链接并将intent-filter暴露给外部应用程序。我认为这是不可能的,但也许你可以问问亚马逊。

【讨论】:

非常感谢一树。此包名称适用于启动亚马逊购物应用程序。现在我想弄清楚如何传递参数以登陆特定的产品页面。此页面有一些文档,但我不确定此 API 是否仅适用于 Amazon Apps:developer.amazon.com/public/apis/earn/in-app-purchasing/docs-v2/… 您提供的链接似乎仅适用于亚马逊应用商店。我发现了这个 SO 线程 ***.com/questions/27693062/… 并且它似乎在我的设备上工作 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("com.amazon.mobile.shopping://www.amazon.com/products/B00KWFCV32/"));开始活动(意图);但由于它没有公开记录(或者我找不到文件),我建议不要使用它(或者使用您自担风险有一天链接会被破坏) 非常感谢@Kazuki 的帮助!【参考方案2】:

使用问题

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);

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

【讨论】:

【参考方案3】:

如果你想深度链接到详情页面,首先你应该找到亚马逊的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

【讨论】:

以上是关于如何在 Android 应用中启动亚马逊购物应用?的主要内容,如果未能解决你的问题,请参考以下文章

如何消除android应用程序中的休眠错误?

如何在 Android 应用中处理购物车和付款? [关闭]

如何在亚马逊中实现 IAP 订阅的自动更新开/关功能 - kindle android 应用程序

Android - 亚马逊应用内购买

如何区分 Android 应用程序是不是在 Amazon Kindle Fire 上运行?

如何获取亚马逊购物车的内容?