モバイル版アンドロイドでグーグルプレイストアのリンクを開く


88

最新のアプリに他のアプリのリンクがあり、そのように開いています。

Uri uri = Uri.parse("url");
Intent intent = new Intent (Intent.ACTION_VIEW, uri); 
startActivity(intent);

このコードは、Google Playストアのブラウザーバージョンを開きます。

携帯電話から開こうとすると、ブラウザまたはGoogle Playを使用するかどうかを尋ねるメッセージが表示され、2つ目を選択すると、モバイル版のGoogle Playストアが開きます。

これが一度にどのように起こるのか教えていただけますか?私に尋ねるのではなく、携帯電話から直接開いているときに表示されるモバイル版のGoogle Playを直接開きます。


1
最後から2番目の段落が私にとって正しいことを願っています。ここにあるhttpリンクを使用する: developer.android.com/distribute/googleplay/promote/…は、ユーザーにアプリまたはブラウザーを選択するように求めません。常にブラウザを想定しています。残念ながら、このmarket://プロトコルも使用できません。この動作を見ている人はいますか?
SilithCrowe 2013年

回答:


265

指定したmarketプロトコルを使用する必要があります。

final String appPackageName = "com.example"; // Can also use getPackageName(), as below
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));

これは、マーケットがインストールされていないデバイス(エミュレータなど)でクラッシュすることに注意してください。したがって、私は次のようなものを提案します:

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("http://play.google.com/store/apps/details?id=" + appPackageName)));
}

getPackageName()from Contextまたはそのサブクラスを使用して一貫性を保つ@cprcrackに感謝!)。マーケットインテントの詳細については、リンクをご覧ください


ブラウザで次を開いても、Google Playは開きません
。market

1
IDはパッケージ名であり、アプリ名ではありません。試してみてくださいmarket://details?id=com.PandoraTVこれが必要なアプリであると想定しています)。
Eric

9
この答えはmarket://、ブラウザ経由のウェブサイトからではなく、独自のアプリからの接頭辞の使用に関するものです。私は(バージョン2.3、3.xでは、4.0、4.1で、かつ4.2)その機能を証明し、それが株式ブラウザ、クロームのベータ版25、とChrome 18で動作することができます
エリック

1
はい、Chromeはアプリですが、そのためには、メーカー[Google]がこのコードを使用する必要があり、ウェブサイトを作成する人[あなた]ではありません。現状では、このコードは、特にアプリからリンクを構築している人々を支援するためのものです。
Eric

2
を使用getPackageName()して、アプリIDを自動的に取得できます。
cprcrack

6

以下のコードは、モバイル版でグーグルプレイ痛いのアプリケーションリンクを表示するのに役立ちます。

アプリケーションリンクの場合:

Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName());
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);

  try {
        startActivity(myAppLinkToMarket);

      } catch (ActivityNotFoundException e) {

        //the device hasn't installed Google Play
        Toast.makeText(Setting.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();
              }

開発者リンク:

Uri uri = Uri.parse("market://search?q=pub:" + YourDeveloperName);
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);

            try {

                startActivity(myAppLinkToMarket);

            } catch (ActivityNotFoundException e) {

                //the device hasn't installed Google Play
                Toast.makeText(Settings.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();

            } 

3

Android Intentsライブラリを使用して、次のようにGoogle Playでアプリケーションページを開くことができます。

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);

2
リンクのみの回答は推奨されないことに注意してください。SOの回答は、ソリューションの検索のエンドポイントである必要があることに注意してください(時間の経過とともに古くなる傾向がある、参照の途中での停止)。参照としてリンクを維持しながら、ここにスタンドアロンの概要を追加することを検討してください。
kleopatra 2013

4
これはあなたのライブラリであり、関数は受け入れられた回答とほとんど同じ方法で実装されているという免責事項を含めると役立ちます。
ta.speot.is 2014年


1

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

0

Google Playでアプリのページを開く:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.