2011-09-20 12 views

答えて

8

2つの方法があります。既に記載されているgetPackageManager()getApplicationInfo()を使用することができます(パッケージが見つからない場合はPacketManager.NameNotFoundExceptionがスローされます - hereを参照)。 Androidマーケットのパッケージ名はcom.android.vendingです。

しかし、マーケットを検索してどのように処理されるかを確認するためのダミーインテントを作成することもできます。結果のリストは、少なくとも1つのエントリがある場合は、Androidマーケットがインストールされていることを確認することができます:

Intent market = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=dummy")); 
PackageManager manager = getPackageManager(); 
List<ResolveInfo> list = manager.queryIntentActivities(mmarket, 0); 
+0

は「com.android.vendingです"また、" MyApps "アプリケーションが使用されているHoneycomb(またはそれ以降の)デバイスのpackageName?また、 "market://"インテントチェックは、他のマーケットアプリもそれを使用しているため信頼性がありません。 –

+0

com.android.vendingとHoneycombに関しては確かに言えません。しかし、Androidデベロッパーは、ハニーコム固有のメモ(例:http://developer.android.com/guide/publishing/licensing.html)なしでcom.android.vendingを参照しているので、期待通りに動作すると思います。 – ernes7a

+1

Kindleの火災では、AmazonのApp Storeがmarket:// URIに応答します。 –

1

は、ここに私がやったことだ(ブラウザが存在すると仮定し):

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


Intent website = new Intent(Intent.ACTION_VIEW).setData(Uri 
     .parse("http://play.google.com/store/apps/details?id=com.example.app")); 

try { 

    startActivity(market); 

} catch (ActivityNotFoundException e) { 

    startActivity(website); 

} 
関連する問題