Ссылка «Оцените это приложение» в приложении магазина Google Play на телефоне

Я хотел бы добавить ссылку "Оценить это приложение" в приложении для Android, чтобы открыть список приложений в приложении Google Play на своем телефоне.

What code do I have to write to create the market:// or http://-link open in the Google Play store app on the phone? Where do you put the code? Does anyone have a sample implementation of this? Do you have to specify the screen where the market:// or http:// link will be placed, and which is the best to use - market:// or http://?
 caw03 мар. 2016 г., 04:00
Здесь есть все, что тебе нужно: Github.com / наслаждение-им / AppRater И вы можете посмотреть исходный код, чтобы понять, как это делается.

Ответы на вопрос(13)

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=PackageName")));
 Mina Dahesh06 февр. 2017 г., 18:06
я использую его, но он показывает эту ошибку: `android.content.ActivityNotFoundException: не найдена активность для обработки Intent {act = android.intent.action.VIEW dat = market: // details? id = PackageName}` - что я могу делать
 Mina Dahesh08 февр. 2017 г., 19:41
@ Кабезас. я использую этот код: `try {Intent intent = new Intent (Intent.ACTION_VIEW); intent.setData (Uri.parse ( "базар: // подробнее ID = vow_note.maxsoft.com.vownote?")); intent.setData (Uri.parse ( "myket: // комментарий ID = vow_note.maxsoft.com.vownote")); startActivity (намерение); } catch (ActivityNotFoundException e1) {try {startActivity (new Intent (Intent.ACTION_VIEW, Uri.parse ("MARKET URL"))); startActivity (new Intent (Intent.ACTION_VIEW, Uri.parse («URL-адрес РЫНКА»))); } catch (ActivityNotFoundException e2) {Тост.}
 WhiteHorse06 июн. 2015 г., 22:14
Легко. Оно работае
 androidStud26 июл. 2016 г., 07:15
Всегда как один лайне
 Cabezas06 февр. 2017 г., 18:34
Можете ли вы проверитьэт ?

pstore. Я также рассматриваю случай, когда у пользователей (особенно в Китае) нет ни магазина приложений, ни браузера.

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();
        }
    }
}
 izzy Machado09 янв. 2019 г., 20:04
где мы устанавливаем логическое значение googlePlay?
 user465259516 мар. 2015 г., 05:14
Не отвечает на поставленный вопрос.
 izzy Machado04 янв. 2019 г., 17:45
Как насчет кода, чтобы открыть список приложений вашего магазина в Amazon?

Котлин версия

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)
    }
}
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.StringRes;
import android.widget.Toast;

public class PlayStoreLink {

public void checkForUpdate(Context context, int applicationId) 
{
    try {
        context.startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse(context.getString(R.string.url_market_details)
                        + applicationId)));
    } catch (android.content.ActivityNotFoundException anfe) {
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW,
                    Uri.parse(context.getString(R.string.url_playstore_app)
                            + applicationId)));
        } catch (Exception e) {
            Toast.makeText(context,
                    R.string.install_google_play_store,
                    Toast.LENGTH_SHORT).show();
        }
    }
}

public void moreApps(Context context, @StringRes int devName) {
    try {
        context.startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse(context.getString(R.string.url_market_search_app)
                        + context.getString(devName))));
    } catch (android.content.ActivityNotFoundException anfe) {
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW,
                    Uri.parse(context.getString(R.string.url_playstore_search_app)
                            + context.getString(devName))));
        } catch (Exception e) {
            Toast.makeText(context,
                    R.string.install_google_play_store,
                    Toast.LENGTH_SHORT).show();
        }
    }
}

public void rateApp(Context context, int applicationId) {
    try {
        Uri uri = Uri.parse(context.getString(R.string.url_market_details)
                + applicationId);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH)
            flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
        else
            flags |= Intent.FLAG_,ACTIVITY_CLEAR_WHEN_TASK_RESET;
        intent.addFlags(flags);
        context.startActivity(intent);
    } catch (ActivityNotFoundException e) {
        checkForUpdate(context, applicationId);
    }
}
}

<string name="install_google_play_store" translatable="false">Please install google play store and then try again.<string name="url_market_details" translatable="false">market://details?id=
<string name="url_playstore_app" translatable="false">https://play.google.com/store/apps/details?id=
<string name="url_market_search_app" translatable="false">market://search?q=pub:
<string name="url_playstore_search_app" translatable="false">http://play.google.com/store/search?q=pub:
<string name="app_link" translatable="false">https://play.google.com/store/apps/details?id=

devName - это имя учетной записи разработчика в магазине Play

который может работать для вас, это Linkify. Если у меня есть TextView, который запрашивает у пользователя оценку приложения, я могу связать пару слов в тексте, чтобы они были выделены, и когда пользователь касается их, открывается магазин воспроизведения, готовый к их просмотру:

class playTransformFilter implements TransformFilter {
   public String transformUrl(Matcher match, String url) {
        return "market://details?id=com.qwertyasd.yourapp";
   }
}

class playMatchFilter implements MatchFilter {
    public boolean acceptMatch(CharSequence s, int start, int end) {
        return true;
    }
}
text1 = (TextView) findViewById(R.id.text1);
text1.setText("Please rate it.");
final Pattern playMatcher = Pattern.compile("rate it");
Linkify.addLinks(text1, playMatcher, "", 
                   new playMatchFilter(), new playTransformFilter());
 Trikaldarshi11 сент. 2013 г., 17:30
название пакета не является хорошей идеей

Вот рабочий и актуальный код

/*
* 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() функция.

ости.

try {
            Uri uri = Uri.parse("market://details?id=" + getPackageName());
            Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(goToMarket);
        } catch (ActivityNotFoundException e) {
            startActivity(new Intent(Intent.ACTION_VIEW,
                    Uri.parse("http://play.google.com/store/apps/details?id="
                            + getPackageName())));
        }
 Sagar Balyan11 окт. 2017 г., 13:31
Для чего это? -market://details?id= Моя ссылка на приложение похожа наhttps:\\play.google.com\apps\details?id=
Решение Вопроса

    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 Store с уже открытой страницей вашего приложения. Пользователь может оценить это там.

 miguel.rodelas30 мая 2012 г., 16:34
Вам не нужно добавлять код в манифест. Вам просто нужно поместить этот код в OnClickListener вашей кнопки / ссылки, чтобы при нажатии кнопки код выполнялся и запускался Play Store.
 Jan Muller22 янв. 2014 г., 10:41
Это решение не учитывается с бэкстэком Play market. После нажатия кнопки «Назад» вы не вернетесь к своему приложению. Если хотите, добавьте эту строку: intent.addFlags (Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
 Adreno30 мая 2012 г., 16:09
Где я могу разместить этот код в androidmanifest.xml? Нужно ли добавить что-нибудь еще? Как это соответствует реальной ссылке или кнопке на экране, который нажимает пользователь? Благодарност
 edwoollard27 июл. 2012 г., 21:27
Есть ли способ сделать все это, но затем откройте диалоговое окно «Оценить это приложение». Благодарность
 xnagyg27 авг. 2015 г., 14:58
Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET: эта константа устарела на уровне API 21. Начиная с API 21 это работает идентично FLAG_ACTIVITY_NEW_DOCUMENT, который следует использовать вместо этого.

getInstalledPackages () от PackageManager class и убедитесь, что установлен рыночный класс. Вы также можете использоватьqueryIntentActivities (), чтобы убедиться, что созданное вами намерение может быть обработано чем-либо, даже если это не рыночное приложение. Это, вероятно, лучшее, что можно сделать на самом деле, потому что он самый гибкий и надежный.

Вы можете проверить, есть ли приложение Market,

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 Market на странице своего приложения, оно немного более автоматизировано:

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

Если вы хотите проверить это на своем эмуляторе, возможно, у вас не установлен маркет на нем: см. Эти ссылки для получения дополнительной информации:

Как включить Android Market в эмуляторе Google Android

Установка Google Play на эмуляторе Android

 Adreno30 мая 2012 г., 16:11
Где я могу разместить этот код в androidmanifest.xml? Нужно ли добавить что-нибудь еще? Как это соответствует реальной ссылке или кнопке на экране, который нажимает пользователь? Благодарност

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();
}
 Sagar Balyan11 окт. 2017 г., 13:32
Для чего это? -market://details?id= Моя ссылка на приложение похожа наhttps:\\play.google.com\apps\details?id=
 Piotr Sagalara13 мар. 2017 г., 22:54
работает отлично, спасибо!
 gtgray17 окт. 2017 г., 16:30
@ SagarBalyan, это специальный URI для открытия страницы вашего приложения в приложении Google Play Market. Если вы начнете деятельность по предоставленной вами ссылке, android откроет страницу вашего приложения в браузере по умолчанию или предложит вам выбрать, какое приложение браузера запускать

у меня это работает

public static void showRateDialogForRate(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) {
                        ////////////////////////////////
                        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_CLEAR_WHEN_TASK_RESET |
                                Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
                        try {
                            context.startActivity(goToMarket);
                        } catch (ActivityNotFoundException e) {
                            context.startActivity(new Intent(Intent.ACTION_VIEW,
                                    Uri.parse("http://play.google.com/store/apps/details?id=" + context.getPackageName())));
                        }


                    }
                }
            })
            .setNegativeButton("CANCEL", null);
    builder.show();
}

которые имеют реализации, основанные на стратегии getPackageName (), заключается в том, что использование BuildConfig.APPLICATION_ID может быть более простым и эффективным, если вы используете одну и ту же кодовую базу для создания нескольких приложений с разными идентификаторами приложений (например, продукт с белой этикеткой).

Play Store Rating

             @Override
            public void onClick(View v) {
                Uri uri = Uri.parse("market://details?id=" + 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=" + getPackageName())));
                }
            }
        });

Ваш ответ на вопрос