从我的应用程序类打开Goog​​le Play商店

时间:2019-09-12 04:28:07

标签: java android

看到this答案后,我实现了以下内容:

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

但是我遇到以下崩溃:

AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag.

该日志为我提供了崩溃的原因,但是由于无法测试(我无法重现该问题),因此我不确定我是否正确实施了该日志。

因此我将以上内容更改为以下内容:

final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}

请注意,这是在我的Application类中调用的。


有人可以确认我的操作是否正确吗?如前所述,我无法测试问题是否解决。

编辑1:

看到this的答案后,我不确定设置标志是否正确?

2 个答案:

答案 0 :(得分:0)

您是否尝试过根据上下文引用开始意图?喜欢:

context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

我遇到了同样的问题,对我有帮助,也可以使用getApplicationContext();

答案 1 :(得分:0)

实际上,您传递的软件包名称错误,这就是发生此AndroidRuntimeException异常的原因。我遇到了这个问题,下面的代码解决了我的问题。

检查我在代码中使用的以下代码。

try {
       startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + BuildConfig.APPLICATION_ID)));
} catch (ActivityNotFoundException anfe) {
       startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID)));
}
finish();