如何在 Android 应用程序中启动亚马逊购物应用程序?
How to launch Amazon Shopping app in Android app?
我希望能够从我的 android 应用程序启动 Amazon 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
我希望能够从我的 android 应用程序启动 Amazon 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