我使用以下代码打开了Google Playstore

Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse("https://play.google.com/store/apps/details?id=my packagename "));
startActivity(i);.

但它向我展示了一个完整的操作视图,用于 Select 选项(浏览器/游戏store ).我需要直接在Play Store中打开应用程序.

推荐答案

您可以使用market:// prefix来做到这一点.

JAVA

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("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

Kotlin

try {
    startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$packageName")))
} catch (e: ActivityNotFoundException) {
    startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=$packageName")))
}

我们在这里使用try/catch块,因为如果目标设备上没有安装Play Store,将抛出Exception块.

NOTE:任何应用程序都可以注册为能够处理market://details?id=<appId>个Uri,如果你想专门针对Google Play,请查看Berťák答案

Android相关问答推荐

修改参数应该应用于哪些子元素?

在Android应用程序上使用Room数据库时,是否可以预先填充数据

推断的类型是片段,但应为上下文

原始mp3文件不显示与proguard

用于小部件泄漏警告的伙伴对象中的Kotlin Lateinit

从未设置实时数据值

react 本机生成失败,出现异常.错误:无法确定';<;宏/>;的类型

第一次使用onBackPressed()、NavigateUp()加载时MapView崩溃

Android 不在后台更新位置

Android Jetpack Compose全宽度抽屉优化

使用 settings.gradle 文件将 Firebase 依赖项添加到 Android 项目

根据另一个数组的值对数组进行排序

如何在 Android 应用程序未激活/未聚焦时显示视图?

JCenter 是否永久关闭(10 月 31 日)?

前台服务通知需要几秒钟才能显示

Kotlin Coroutines Dispatchers.IO 没有创建预期的线程

如何在包含 Jetpack Compose 内容的布局中使用权重

为什么我在 Jetpack Compose 中被警告可选修饰符参数应该具有默认值修饰符?

Kotlin Compose 全局页脚视图

未解决的参考:getIntentSender / try 在 Jetpack Compose 中获取电话号码时