我在我最新的应用程序中有我的其他应用程序的链接,我以这种方式打开它们。
Uri uri = Uri.parse("url");
Intent intent = new Intent (Intent.ACTION_VIEW, uri);
startActivity(intent);
此代码打开谷歌播放商店的浏览器版本。
当尝试从我的手机打开时,手机会提示我是否要使用浏览器或 google play,如果我选择第二个,它会打开 google play store 的移动版本。
你能告诉我这怎么会同时发生?我的意思是不问我,而是直接打开手机版的google play,我直接从手机打开它时看到的那个。
market://
协议。还有其他人看到这种行为吗?
您需要使用指定的 market
协议:
final String appPackageName = "com.example"; // Can also use getPackageName(), as below
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
请记住,这将在任何未安装 Market 的设备(例如模拟器)上崩溃。因此,我建议如下:
final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName)));
}
使用 Context
中的 getPackageName()
或其子类以保持一致性(感谢 @cprcrack!)。您可以在此处找到有关市场意图的更多信息:link。
下面的代码可以帮助您在移动版本中显示 google play sore 的应用程序链接。
申请链接:
Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName());
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);
try {
startActivity(myAppLinkToMarket);
} catch (ActivityNotFoundException e) {
//the device hasn't installed Google Play
Toast.makeText(Setting.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();
}
对于开发者链接:
Uri uri = Uri.parse("market://search?q=pub:" + YourDeveloperName);
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);
try {
startActivity(myAppLinkToMarket);
} catch (ActivityNotFoundException e) {
//the device hasn't installed Google Play
Toast.makeText(Settings.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();
}
您可以使用 Android Intents 库在 Google Play 中打开您的应用程序页面,如下所示:
Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);
您可以检查是否安装了 Google Play Store 应用,如果是这样,您可以使用“market://”协议。
final String my_package_name = "........." // <- HERE YOUR PACKAGE NAME!!
String url = "";
try {
//Check whether Google Play store is installed or not:
this.getPackageManager().getPackageInfo("com.android.vending", 0);
url = "market://details?id=" + my_package_name;
} catch ( final Exception e ) {
url = "https://play.google.com/store/apps/details?id=" + my_package_name;
}
//Open the app page in Google Play store:
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);
在 Google Play 上打开应用页面:
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
market://details?id=com.PandoraTV
(假设 this 是您想要的应用程序)。market://
前缀,而不是通过浏览器从网站中使用。我可以证明它的功能(在 2.3、3.x、4.0、4.1 和4.2),它适用于普通浏览器、Chrome Beta 25 和 Chrome 18。getPackageName()
自动检索应用程序 ID。