휴대 전화의 Google Play 스토어 앱에서 ‘이 앱 평가’링크 전화에서 사용자의 Google Play 스토어 앱에서 앱

휴대 전화에서 사용자의 Google Play 스토어 앱에서 앱 목록을 열려면 Android 앱에 ‘이 앱 평가’링크를 추가하고 싶습니다.

  1. 휴대 전화의 Google Play 스토어 앱에서 market://또는 http://링크를 열 려면 어떤 코드를 작성해야 하나요?
  2. 코드를 어디에 넣습니까?
  3. 누구든지 이것에 대한 샘플 구현이 있습니까?
  4. 당신은 화면 지정해야합니까 market://또는 http://링크가 배치됩니다 및 사용에 가장 잘입니다 – market://http://?


답변

다음 코드를 사용하여 앱에서 Play 스토어를 엽니 다.

    Uri uri = Uri.parse("market://details?id=" + context.getPackageName());
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    // To count with Play market backstack, After pressing back button, 
    // to taken back to our application, we need to add following flags to intent. 
    goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
                    Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
                    Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
    try {
        startActivity(goToMarket);
    } catch (ActivityNotFoundException e) {
        startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://play.google.com/store/apps/details?id=" + context.getPackageName())));
    }

앱 페이지가 이미 열려있는 상태에서 Play 스토어가 시작됩니다. 사용자는 그곳에서 평가할 수 있습니다.


답변

작동하고 최신 코드는 다음과 같습니다. 🙂

/*
* Start with rating the app
* Determine if the Play Store is installed on the device
*
* */
public void rateApp()
{
    try
    {
        Intent rateIntent = rateIntentForUrl("market://details");
        startActivity(rateIntent);
    }
    catch (ActivityNotFoundException e)
    {
        Intent rateIntent = rateIntentForUrl("https://play.google.com/store/apps/details");
        startActivity(rateIntent);
    }
}

private Intent rateIntentForUrl(String url)
{
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("%s?id=%s", url, getPackageName())));
    int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
    if (Build.VERSION.SDK_INT >= 21)
    {
        flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
    }
    else
    {
        //noinspection deprecation
        flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
    }
    intent.addFlags(flags);
    return intent;
}

Activity호출하고자 하는 곳에 코드를 넣으십시오 .
사용자가 버튼을 클릭하여 앱을 평가하면 rateApp()함수를 호출하기 만하면 됩니다.


답변

나는 항상이 코드를 사용한다 :

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=PackageName")));


답변

Google Play 스토어와 Amazon Appstore 모두에 앱을 게시하는 경우입니다. 또한 사용자 (특히 중국)에 앱 스토어와 브라우저가 모두없는 경우도 처리합니다.

public void goToMyApp(boolean googlePlay) {//true if Google Play, false if Amazone Store
    try {
       startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse((googlePlay ? "market://details?id=" : "amzn://apps/android?p=") +getPackageName())));
    } catch (ActivityNotFoundException e1) {
        try {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse((googlePlay ? "http://play.google.com/store/apps/details?id=" : "http://www.amazon.com/gp/mas/dl/android?p=") +getPackageName())));
        } catch (ActivityNotFoundException e2) {
            Toast.makeText(this, "You don't have any app that can open this link", Toast.LENGTH_SHORT).show();
        }
    }
}


답변

항상 PackageManager 클래스 에서 getInstalledPackages () 를 호출 하고 마켓 클래스가 설치되어 있는지 확인할 수 있습니다. queryIntentActivities ()를 사용할 수도 있습니다. 를 사용하여 마켓 애플리케이션이 아닌 경우에도 생성 한 인 텐트가 무언가에 의해 처리 될 수 있도록 할 수 있습니다. 가장 유연하고 강력하기 때문에 실제로 수행하는 것이 가장 좋습니다.

마켓 앱이 있는지 확인할 수 있습니다.

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://search?q=foo"));
PackageManager pm = getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);

목록에 하나 이상의 항목이 있으면 마켓이있는 것입니다.

다음을 사용하여 애플리케이션 페이지에서 Android 마켓을 시작할 수 있습니다. 조금 더 자동화되어 있습니다.

Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("market://details?id=" + getPackageName()));
startActivity(i);

에뮬레이터에서 이것을 테스트하려면 시장이 설치되어 있지 않을 것입니다. 자세한 내용은 다음 링크를 참조하십시오.

Google Android 에뮬레이터에서 Android 마켓을 활성화하는 방법

Android 에뮬레이터에 Google Play 설치


답변

이 방법을 사용하여 사용자가 내 앱을 평가하도록합니다.

public static void showRateDialog(final Context context) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context)
            .setTitle("Rate application")
            .setMessage("Please, rate the app at PlayMarket")
            .setPositiveButton("RATE", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (context != null) {
                        String link = "market://details?id=";
                        try {
                            // play market available
                            context.getPackageManager()
                                    .getPackageInfo("com.android.vending", 0);
                        // not available
                        } catch (PackageManager.NameNotFoundException e) {
                            e.printStackTrace();
                            // should use browser
                            link = "https://play.google.com/store/apps/details?id=";
                        }
                        // starts external action
                        context.startActivity(new Intent(Intent.ACTION_VIEW,
                                Uri.parse(link + context.getPackageName())));
                    }
                }
            })
            .setNegativeButton("CANCEL", null);
    builder.show();
}


답변

코 틀린 버전

fun openAppInPlayStore() {
    val uri = Uri.parse("market://details?id=" + context.packageName)
    val goToMarketIntent = Intent(Intent.ACTION_VIEW, uri)

    var flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_MULTIPLE_TASK
    flags = if (Build.VERSION.SDK_INT >= 21) {
        flags or Intent.FLAG_ACTIVITY_NEW_DOCUMENT
    } else {
        flags or Intent.FLAG_ACTIVITY_CLEAR_TASK
    }
    goToMarketIntent.addFlags(flags)

    try {
        startActivity(context, goToMarketIntent, null)
    } catch (e: ActivityNotFoundException) {
        val intent = Intent(Intent.ACTION_VIEW,
                Uri.parse("http://play.google.com/store/apps/details?id=" + context.packageName))

        startActivity(context, intent, null)
    }
}