【问题标题】:How to launch Amazon Shopping app in Android app?如何在 Android 应用中启动亚马逊购物应用?
【发布时间】:2016-02-23 13:58:33
【问题描述】:
【问题讨论】:
标签:
android
android-intent
amazon
android-pendingintent
amazon-appstore
【解决方案1】:
我希望能够从我的安卓系统启动亚马逊购物应用
应用。这怎么可能?需要什么参数
进入意图?
您可以使用PackageManager#getLaunchIntentForPackage
startActivity(getPackageManager().getLaunchIntentForPackage("com.amazon.mShop.android.shopping"));
另外,怎么可能传递一个深层链接参数,所以
它登陆特定的产品页面?
这取决于亚马逊应用程序是否实现深度链接并将intent-filter暴露给外部应用程序。我认为这是不可能的,但也许你可以问问亚马逊。
【解决方案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