2011-09-20 6 views

답변

8

두 가지 방법이 있습니다. 이미 언급 한 getPackageManager()getApplicationInfo()을 사용할 수 있습니다 (패키지를 찾을 수없는 경우 PacketManager.NameNotFoundException이 던집니다 - here 참조). Android 마켓의 패키지 이름은 com.android.vending입니다.

그러나 시장을 검색하고 처리 방법을 확인하기위한 더미 인 텐트를 만들 수도 있습니다. 결과 목록은 적어도 하나의 항목이있는 경우, 당신은 안드로이드 마켓이 설치되어 있는지 확인하실 수 있습니다 :

다음
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 개발자는 Honeycomb 별 메모없이 com.android.vending을 참조합니다 (예 : http://developer.android.com/guide/publishing/licensing.html). 따라서 예상대로 작동한다고 가정합니다. – ernes7a

+1

킨들 파이어 (Kindle Fire)에서 Amazon의 App Store는 시장 : // 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); 

} 
관련 문제