私は Android 用の多くのアプリを作成していますが、基本的に Android マーケットの他のアプリのリストを開くメニュー ボタンをアプリに追加したいと考えています。
ユーザーが他のアプリを購入できるように、インテントを作成し、マーケットで (私の会社の) 検索で Android マーケットをポップアップさせる方法はありますか?
イアン
私は Android 用の多くのアプリを作成していますが、基本的に Android マーケットの他のアプリのリストを開くメニュー ボタンをアプリに追加したいと考えています。
ユーザーが他のアプリを購入できるように、インテントを作成し、マーケットで (私の会社の) 検索で Android マーケットをポップアップさせる方法はありますか?
イアン
「market://search」の代わりに「market://details」を使用することをお勧めします。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.android.example"));
startActivity(intent);
次に、アプリの詳細ページを直接開きます。検索では、単一の検索結果が表示され、ユーザーは詳細ページに到達するためにさらにクリックする必要があります。
はい、そのための文書化されたIntent
構文があります(http://market.android.com/search?q=pub:<Developer Name>
またはmarket://search?q=pub:<Developer Name>
)。
インテント アクションはビュー、uri は市場の URL/uri です。
このような:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pub:<developer name>") ) );
もう 1 つの方法はURL Intent
、アプリケーションのパッケージ名を指定して を起動することです。ユーザーは、ターゲット アプリを表示できる、インストールされているブラウザ+ Play ストアアプリのリストを含むポップアップを取得します。
String appPackageName = "com.example.android";
String url = "https://play.google.com/store/apps/details?id=" + appPackageName;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
上記のコードはテスト済みで、Play ストア バージョン 4.1.6 で期待どおりに動作します。
私の実際のデバイスである Sony Xperia Pro とPocketBookタブレットでは、たとえばhttps://play.google.com/store/apps/details?id=com.estrongs.android.popなどのウェブ ストアをプレイするためのリンクを配置した場合でも、デフォルトのブラウザまたは Play マーケットで開きたい場合。Play マーケットを選択すると、アプリケーションは期待どおりに表示されます。意図的にテストせず、TextView の Autolink でテストしました。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.adfree:
final String appPackageName = "com.zooohooo.noads"; // Can also use getPackageName(), as below
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
return true;
case R.id.rate:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName())));
return true;
}
return super.onOptionsItemSelected(item);
}