Muitas respostas aqui sugerem usar Uri.parse("market://details?id=" + appPackageName))
para abrir o Google Play, mas acho que é insuficiente :
Alguns aplicativos de terceiros podem usar seus próprios filtros de intenção com "market://"
esquema definido , para que possam processar o Uri fornecido em vez do Google Play (experimentei essa situação com o aplicativo egSnapPea). A pergunta é "Como abrir a Google Play Store?", Presumo que você não deseja abrir nenhum outro aplicativo. Observe também que, por exemplo, a classificação do aplicativo é relevante apenas no aplicativo da GP Store, etc.
Para abrir o Google Play E SOMENTE o Google Play, eu uso este método:
public static void openAppRating(Context context) {
// you can also use BuildConfig.APPLICATION_ID
String appId = context.getPackageName();
Intent rateIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + appId));
boolean marketFound = false;
// find all applications able to handle our rateIntent
final List<ResolveInfo> otherApps = context.getPackageManager()
.queryIntentActivities(rateIntent, 0);
for (ResolveInfo otherApp: otherApps) {
// look for Google Play application
if (otherApp.activityInfo.applicationInfo.packageName
.equals("com.android.vending")) {
ActivityInfo otherAppActivity = otherApp.activityInfo;
ComponentName componentName = new ComponentName(
otherAppActivity.applicationInfo.packageName,
otherAppActivity.name
);
// make sure it does NOT open in the stack of your activity
rateIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// task reparenting if needed
rateIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// if the Google Play was already open in a search result
// this make sure it still go to the app page you requested
rateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// this make sure only the Google Play app is allowed to
// intercept the intent
rateIntent.setComponent(componentName);
context.startActivity(rateIntent);
marketFound = true;
break;
}
}
// if GP not present on device, open web browser
if (!marketFound) {
Intent webIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/apps/details?id="+appId));
context.startActivity(webIntent);
}
}
O ponto é que quando mais aplicativos ao lado do Google Play podem abrir nossa intenção, a caixa de diálogo do seletor de aplicativos é ignorada e o aplicativo GP é iniciado diretamente.
ATUALIZAÇÃO:
Às vezes, parece que ele abre apenas o aplicativo GP, sem abrir o perfil do aplicativo. Como TrevorWiley sugeriu em seu comentário, Intent.FLAG_ACTIVITY_CLEAR_TOP
poderia resolver o problema. (Eu ainda não testei ...)
Veja esta resposta para entender o que Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
faz.