Androidアプリから直接Google Playストアを開く方法は?


569

次のコードを使用してGoogle Playストアを開きました

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

しかし、オプション(ブラウザ/プレイストア)を選択するための完全なアクションビューが表示されます。Playストアで直接アプリケーションを開く必要があります。


回答:


1436

market://プレフィックスを使用してこれを行うことができます

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

Playストアがターゲットデバイスにインストールされていない場合にスローされるtry/catchため、ここではブロックを使用しExceptionます。

:どのアプリでもmarket://details?id=<appId>Uri を処理できるものとして登録できます。特にGoogle Playをターゲットにする場合は、ベルチャクの回答を確認してください


53
すべての開発者のアプリの使用にリダイレクトしたい場合market://search?q=pub:"+devNamehttp://play.google.com/store/search?q=pub:"+devName
Stefano Munarini 2013

4
一部のアプリケーションが「market://」スキームが定義されたインテントフィルターを使用している場合、このソリューションは機能しません。Google Playおよび唯一のGoogle Playアプリケーション(GPが存在しない場合はWebブラウザー)を開く方法についての私の回答を参照してください。:-)
Berťák

18
Gradleビルドシステムを使用するプロジェクトの場合、appPackageName実際にはBuildConfig.APPLICATION_IDです。Context/ Activity依存関係がないため、メモリリークのリスクが軽減されます。
クリスチャンガルシア

3
インテントを起動するには、まだコンテキストが必要です。Context.startActivity()
wblaschko

2
このソリューションは、Webブラウザーを開く意図があることを前提としています。これは(Android TVのように)常に正しいとは限らないため、注意が必要です。intent.resolveActivity(getPackageManager())を使用して、何をすべきかを判断することができます。
Coda

161

ここでの多くの回答は、 Uri.parse("market://details?id=" + appPackageName)) Google Playを開くために使用することを提案しています、実際には不十分だと思います

一部のサードパーティアプリケーションは、"market://"スキームが定義された独自のインテントフィルターを使用できるため、 Google Playの代わりに提供されたUriを処理できます(egSnapPeaアプリケーションでこの状況を経験しました)。質問は「Google Playストアを開く方法は?」なので、他のアプリケーションを開きたくないと思います。また、たとえば、アプリの評価はGPストアアプリなどにのみ関連することにも注意してください...

Google Playを開き、Google Playのみを開くには、次の方法を使用します。

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

重要なのは、Google Playの横にあるより多くのアプリケーションがインテントを開くことができる場合、app-chooserダイアログがスキップされ、GPアプリが直接起動されることです。

更新: アプリのプロファイルを開かずに、GPアプリのみを開くように見える場合があります。TrevorWileyが彼のコメントで提案したIntent.FLAG_ACTIVITY_CLEAR_TOPように、問題を修正できます。(私はまだ自分でテストしていません...)

何が行われるかを理解するには、この回答を参照してくださいIntent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED


4
これは良いことですが、現在のGoogle Playビルドでも信頼性が低いようですが、Google Playで別のアプリのページに移動してこのコードをトリガーすると、Google Playが開かれるだけでアプリにアクセスできなくなります。
zoltish

2
@zoltish、フラグにIntent.FLAG_ACTIVITY_CLEAR_TOPを追加しました。これで問題が解決したようです
TrevorWiley

Intent.FLAG_ACTIVITY_CLEAR_TOPを使用しました| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDが機能しません。Playストアの新しいインスタンスのオープンなし
Praveen Kumar Verma

3
rateIntent.setPackage("com.android.vending")このすべてのコードの代わりに、PlayStoreアプリがこのインテントを処理することを確認するために使用するとどうなりますか?
dum4ll3

3
@ dum4ll3できると思いますが、このコードは、Google Playアプリがインストールされているかどうかも暗黙的にチェックします。チェックしない場合、ActivityNotFoundをキャッチする必要があります
Daniele Segato

81

チュートリアルとしてAndroid Developer公式リンクに移動し、手順を参照して、Playストアからアプリケーションパッケージのコードを取得するか、Playストアアプリが存在しない場合は、Webブラウザーからアプリケーションを開きます。

Androidデベロッパー公式リンク

https://developer.android.com/distribute/tools/promote/linking.html

アプリケーションページへのリンク

ウェブサイトから: https://play.google.com/store/apps/details?id=<package_name>

Androidアプリから: market://details?id=<package_name>

製品リストへのリンク

ウェブサイトから: https://play.google.com/store/search?q=pub:<publisher_name>

Androidアプリから: market://search?q=pub:<publisher_name>

検索結果へのリンク

ウェブサイトから: https://play.google.com/store/search?q=<search_query>&c=apps

Androidアプリから: market://search?q=<seach_query>&c=apps


market://プレフィックスの使用は推奨されなくなりました(投稿したリンクを確認してください)
Greg Ennis

@GregEnnisでは、market://プレフィックスはもう推奨されていません。
ロキ

@lokiポイントはもう提案としてリストされていないということです。そのページで単語marketを検索すると、解決策は見つかりません。新しい方法は、より一般的なインテントdeveloper.android.com/distribute/marketing-tools/…を起動することだと思います。最近のバージョンのPlayストアアプリには、このURIのインテントフィルターが含まれている可能性がありますhttps://play.google.com/store/apps/details?id=com.example.android
tir38

25

これを試して

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.example.android"));
startActivity(intent);

1
(同じアプリの新しいビューに埋め込まれていない)Google Playを個別に開く方法については、私の答えを確認してください。
code4jhon 2014

21

上記の回答はすべて、実際にGoogle Play(または他のアプリ)を個別に開きたい場合は、同じアプリの新しいビューでGoogle Playを開きます。

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.android.vending");

// package name and activity
ComponentName comp = new ComponentName("com.android.vending",
                                       "com.google.android.finsky.activities.LaunchUrlHandlerActivity"); 
launchIntent.setComponent(comp);

// sample to open facebook app
launchIntent.setData(Uri.parse("market://details?id=com.facebook.katana"));
startActivity(launchIntent);

重要な部分は、実際にGoogle Playまたは他のアプリを個別に開くことです。

私が見たもののほとんどは他の回答のアプローチを使用しており、私が必要とするものではなかったので、これが誰かの役に立つと思います。

よろしく。


なにthis.cordova?変数宣言はどこにありますか?どこでcallback宣言され、定義されていますか?
エリック14

これはコルドバのプラグインの一部ですが、私はそれが実際には関連性があるとは思わない...あなただけのPackageManagerのインスタンスを必要とし、通常の方法で活動を開始するが、これはのコルドバのプラグインですgithub.com/lampaaいるI上書きここgithub.com/code4jhon/org.apache.cordova.startapp
code4jhon

4
私の要点は、このコードは、実際に人々が単に自分のアプリに移植して使用できるものではないということです。脂肪をトリミングし、コアメソッドのみを残すことは、将来の読者に役立つでしょう。
エリック14

はい、わかりました...今はハイブリッドアプリを使用しています。完全にネイティブコードを実際にテストすることはできません。しかし、その考えはそこにあると思います。機会があれば正確なネイティブラインを追加します。
code4jhon 14

うまくいけば、これは@ericようになります
code4jhon

14

Google Playストアアプリがインストールされているかどうかを確認できます。インストールされている場合は、「market://」プロトコルを使用できます。

final String my_package_name = "........."  // <- HERE YOUR PACKAGE NAME!!
String url = "";

try {
    //Check whether Google Play store is installed or not:
    this.getPackageManager().getPackageInfo("com.android.vending", 0);

    url = "market://details?id=" + my_package_name;
} catch ( final Exception e ) {
    url = "https://play.google.com/store/apps/details?id=" + my_package_name;
}


//Open the app page in Google Play store:
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);

1
(同じアプリの新しいビューに埋め込まれていない)Google Playを個別に開く方法については、私の答えを確認してください。
code4jhon 14

12

エリックの答えは正しいですが、ベルチャックのコードも機能します。これは両方をよりエレガントに組み合わせると思います。

try {
    Intent appStoreIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName));
    appStoreIntent.setPackage("com.android.vending");

    startActivity(appStoreIntent);
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

を使用setPackageすると、デバイスで強制的にPlayストアを使用することになります。Playストアがインストールされていない場合は、Exceptionキャッチされます。


公式ドキュメントhttps://play.google.com/store/apps/details?id=market:どうやって来るのではなく使用しますか?developer.android.com/distribute/marketing-tools/…まだ包括的で短い答えです。
serv-inc

よくわかりませんが、Androidが「play.google.com/store/apps」に変換するショートカットだと思います。例外では、おそらく "market://"も使用できます。
M3-n50


7

できるよ:

final Uri marketUri = Uri.parse("market://details?id=" + packageName);
startActivity(new Intent(Intent.ACTION_VIEW, marketUri));

ここでリファレンスを取得

この質問の承認済みの回答に記載されているアプローチを試すこともできますAndroidデバイスにGoogle Playストアがインストールされているかどうかを判断できません


私はすでにこのコードで試しましたが、これにはブラウザ/再生ストアを選択するオプションも表示されます。これは、デバイスに両方のアプリ(Google Playストア/ブラウザ)がインストールされているためです。
Rajesh Kumar

(同じアプリの新しいビューに埋め込まれていない)Google Playを個別に開く方法については、私の答えを確認してください。
code4jhon 14

7

パーティーの最後の方に公式ドキュメントがあります。そして記述されたコードは

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(
    "https://play.google.com/store/apps/details?id=com.example.android"));
intent.setPackage("com.android.vending");
startActivity(intent);

このインテントを構成するときに、に渡し"com.android.vending"Intent.setPackage()、ユーザーがセレクタではなくGoogle Playストアアプリでアプリの詳細を表示できるようにします。KOTLIN用

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = Uri.parse(
            "https://play.google.com/store/apps/details?id=com.example.android")
    setPackage("com.android.vending")
}
startActivity(intent)

Google Play Instantを使用してInstant Appを公開している場合は、次のようにしてアプリを起動できます。

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri.Builder uriBuilder = Uri.parse("https://play.google.com/store/apps/details")
    .buildUpon()
    .appendQueryParameter("id", "com.example.android")
    .appendQueryParameter("launch", "true");

// Optional parameters, such as referrer, are passed onto the launched
// instant app. You can retrieve these parameters using
// Activity.getIntent().getData().
uriBuilder.appendQueryParameter("referrer", "exampleCampaignId");

intent.setData(uriBuilder.build());
intent.setPackage("com.android.vending");
startActivity(intent);

KOTLINの場合

val uriBuilder = Uri.parse("https://play.google.com/store/apps/details")
        .buildUpon()
        .appendQueryParameter("id", "com.example.android")
        .appendQueryParameter("launch", "true")

// Optional parameters, such as referrer, are passed onto the launched
// instant app. You can retrieve these parameters using Activity.intent.data.
uriBuilder.appendQueryParameter("referrer", "exampleCampaignId")

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = uriBuilder.build()
    setPackage("com.android.vending")
}
startActivity(intent)

少なくとも、これは間違っていると思いますUri.parse("https://play.google.com/store/apps/details?id=。一部のデバイスでは、PlayマーケットではなくWebブラウザーが開きます。
CoolMind

すべてのコードは公式ドキュメントから取得されます。リンクは回答コードにも添付されています。クイックリファレンスとして、ここで説明します。
Husnain Qasim

@CoolMindその理由は、これらのデバイスに、そのURIに一致するインテントフィルターがない古いバージョンのPlayストアアプリがあるためです。
tir38

@ tir38、たぶんそう。おそらく、Google Play Servicesを利用していないか、認証されていないのかもしれませんが、覚えていません。
CoolMind

6

公式ドキュメントを使うhttps://代わりにmarket://、このコンバインエリックの、コードの再利用とM3-N50の答え(自分を繰り返さないでください):

Intent intent = new Intent(Intent.ACTION_VIEW)
    .setData(Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
try {
    startActivity(new Intent(intent)
                  .setPackage("com.android.vending"));
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(intent);
}

存在する場合はGPlayアプリで開こうとし、デフォルトにフォールバックします。


5

すぐに使えるソリューション:

public class GoogleServicesUtils {

    public static void openAppInGooglePlay(Context context) {
        final String appPackageName = context.getPackageName();
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
        } catch (android.content.ActivityNotFoundException e) { // if there is no Google Play on device
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
        }
    }

}

エリックの答えに基づいています。


1
それはあなたのために働きますか?アプリのページではなく、メインのGoogle Playページを開きます。
バイオレットキリン2016

4

コトリン:

拡張:

fun Activity.openAppInGooglePlay(){

val appId = BuildConfig.APPLICATION_ID
try {
    this.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appId")))
} catch (anfe: ActivityNotFoundException) {
    this.startActivity(
        Intent(
            Intent.ACTION_VIEW,
            Uri.parse("https://play.google.com/store/apps/details?id=$appId")
        )
    )
}}

方法:

    fun openAppInGooglePlay(activity:Activity){

        val appId = BuildConfig.APPLICATION_ID
        try {
            activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appId")))
        } catch (anfe: ActivityNotFoundException) {
            activity.startActivity(
                Intent(
                    Intent.ACTION_VIEW,
                    Uri.parse("https://play.google.com/store/apps/details?id=$appId")
                )
            )
        }
    }

3

アプリからGoogle Playストアを開きたい場合は、次のコマンドを直接使用します:market://details?gotohome=com.yourAppName、アプリのGoogle Playストアページを開きます。

特定の発行元のすべてのアプリを表示する

タイトルまたは説明でクエリを使用するアプリを検索します

リファレンス:https : //tricklio.com/market-details-gotohome-1/


3

コトリン

fun openAppInPlayStore(appPackageName: String) {
    try {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appPackageName")))
    } catch (exception: android.content.ActivityNotFoundException) {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=$appPackageName")))
    }
}

2
public void launchPlayStore(Context context, String packageName) {
    Intent intent = null;
    try {
            intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("market://details?id=" + packageName));
            context.startActivity(intent);
        } catch (android.content.ActivityNotFoundException anfe) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
        }
    }

2

この目的のための私のkotlinエンテンション関数

fun Context.canPerformIntent(intent: Intent): Boolean {
        val mgr = this.packageManager
        val list = mgr.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
        return list.size > 0
    }

そしてあなたの活動の中で

val uri = if (canPerformIntent(Intent(Intent.ACTION_VIEW, Uri.parse("market://")))) {
            Uri.parse("market://details?id=" + appPackageName)
        } else {
            Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)
        }
        startActivity(Intent(Intent.ACTION_VIEW, uri))

2

上記の回答の最後のコードは次のとおりです。最初にGoogle Playストアアプリ、特にPlayストアを使用してアプリを開こうとします。失敗した場合は、Webバージョンを使用してアクションビューを開始します。Credits to @Eric、@Jonathan Caballero

public void goToPlayStore() {
        String playStoreMarketUrl = "market://details?id=";
        String playStoreWebUrl = "https://play.google.com/store/apps/details?id=";
        String packageName = getActivity().getPackageName();
        try {
            Intent intent =  getActivity()
                            .getPackageManager()
                            .getLaunchIntentForPackage("com.android.vending");
            if (intent != null) {
                ComponentName androidComponent = new ComponentName("com.android.vending",
                        "com.google.android.finsky.activities.LaunchUrlHandlerActivity");
                intent.setComponent(androidComponent);
                intent.setData(Uri.parse(playStoreMarketUrl + packageName));
            } else {
                intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreMarketUrl + packageName));
            }
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreWebUrl + packageName));
            startActivity(intent);
        }
    }

2

このリンクは、Androidの場合はmarket://で、PCの場合はブラウザーでアプリを自動的に開きます。

https://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.app.id&ddl=1&pcampaignid=web_ddl_1

どういう意味ですか?私の解決策を試しましたか?それは私のために働いた。
Nikolay Shindarov

実際に私のタスクでは、webviewがあり、webviewで任意のURLをロードする必要があります。しかし、その中にプレイストアのURLが開いている場合は、プレイストアを開くボタンが表示されます。そのボタンをクリックしてアプリを開く必要があります。どのアプリケーションでも動的になるため、どのように管理できますか?
hpAndro

リンクを試してくださいhttps://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.app.id&ddl=1&pcampaignid=web_ddl_1
ニコライ・シンダロフ

1

このアプリ評価するシナリオと他のアプリ表示するシナリオの両方を処理するハイブリッドソリューションを作成するために、BerťákStefano Munariniの両方の回答を組み合わせました。

        /**
         * This method checks if GooglePlay is installed or not on the device and accordingly handle
         * Intents to view for rate App or Publisher's Profile
         *
         * @param showPublisherProfile pass true if you want to open Publisher Page else pass false to open APp page
         * @param publisherID          pass Dev ID if you have passed PublisherProfile true
         */
        public void openPlayStore(boolean showPublisherProfile, String publisherID) {

            //Error Handling
            if (publisherID == null || !publisherID.isEmpty()) {
                publisherID = "";
                //Log and continue
                Log.w("openPlayStore Method", "publisherID is invalid");
            }

            Intent openPlayStoreIntent;
            boolean isGooglePlayInstalled = false;

            if (showPublisherProfile) {
                //Open Publishers Profile on PlayStore
                openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse("market://search?q=pub:" + publisherID));
            } else {
                //Open this App on PlayStore
                openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse("market://details?id=" + getPackageName()));
            }

            // find all applications who can handle openPlayStoreIntent
            final List<ResolveInfo> otherApps = getPackageManager()
                    .queryIntentActivities(openPlayStoreIntent, 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
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    // task reparenting if needed
                    openPlayStoreIntent.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
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    // this make sure only the Google Play app is allowed to
                    // intercept the intent
                    openPlayStoreIntent.setComponent(componentName);
                    startActivity(openPlayStoreIntent);
                    isGooglePlayInstalled = true;
                    break;

                }
            }
            // if Google Play is not Installed on the device, open web browser
            if (!isGooglePlayInstalled) {

                Intent webIntent;
                if (showPublisherProfile) {
                    //Open Publishers Profile on web browser
                    webIntent = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("http://play.google.com/store/search?q=pub:" + getPackageName()));
                } else {
                    //Open this App on web browser
                    webIntent = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
                }
                startActivity(webIntent);
            }
        }

使用法

  • 出版社プロファイルを開くには
   @OnClick(R.id.ll_more_apps)
        public void showMoreApps() {
            openPlayStore(true, "Hitesh Sahu");
        }
  • PlayStoreでアプリページを開くには
@OnClick(R.id.ll_rate_this_app)
public void openAppInPlayStore() {
    openPlayStore(false, "");
}

このコードをより小さなメソッドに分割することをお勧めします。このスパゲッティで重要なコードを見つけるのは難しいです:)さらに、com.google.marketについて「com.android.vending」をチェックしています
Aetherna

1

人々は、あなたが実際にそれから何かをもっと得ることができることを忘れないでください。たとえばUTMトラッキングを意味します。https://developers.google.com/analytics/devguides/collection/android/v4/campaigns

public static final String MODULE_ICON_PACK_FREE = "com.example.iconpack_free";
public static final String APP_STORE_URI =
        "market://details?id=%s&referrer=utm_source=%s&utm_medium=app&utm_campaign=plugin";
public static final String APP_STORE_GENERIC_URI =
        "https://play.google.com/store/apps/details?id=%s&referrer=utm_source=%s&utm_medium=app&utm_campaign=plugin";

try {
    startActivity(new Intent(
        Intent.ACTION_VIEW,
        Uri.parse(String.format(Locale.US,
            APP_STORE_URI,
            MODULE_ICON_PACK_FREE,
            getPackageName()))).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(
        Intent.ACTION_VIEW,
        Uri.parse(String.format(Locale.US,
            APP_STORE_GENERIC_URI,
            MODULE_ICON_PACK_FREE,
            getPackageName()))).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
}

1

フォールバックと現在の構文を備えたKotlinバージョン

 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 or Intent.FLAG_ACTIVITY_NEW_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)
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.