2013-03-14 3 views
3

설치된 앱의 버전이 Google Play 또는 Market인지에 관계없이 패키지 이름은 com.android.vending과 동일합니다.Google Play가 설치되어 있는지 확인하는 방법은 무엇인가요? (시장 아님)

앱이 Google Play 또는 Market인지 여부를 확인할 수 있어야합니다. PackageInfo를 체크인했는데 versionCodeversionName은 도움이 될 수 있습니다.

versionCode의 첫 번째 내용을 알고 계시거나 versionName은 Google Play 앱용입니다.

누군가가이를 감지하는 다른 방법을 알고 있다면 알려주십시오.

+0

[getApplicationLabel()] (http://developer.android.com/reference/android/content/pm/PackageManager.html#getApplicationLabel (android.content.pm.ApplicationInfo))을 찾고 있다고 생각합니다. – adneal

+0

http://support.google.com/googleplay/bin/answer.py?hl=ko-CA&answer=113410 –

+0

http://android-er.blogspot.in/2012/12/check-if-correct-google -play-service.html –

답변

4

신청서 라벨을 확인하는 방법을 알아 냈습니다. 내가 디버거를 사용하여 무엇이 모두 packageInfo에 반환 되었는가를 알았 기 때문에 처음에는 그것을 보지 못했습니다.

public static boolean isGooglePlayInstalled(Context context) { 
    PackageManager pm = context.getPackageManager(); 
    boolean app_installed = false; 
    try 
    { 
      PackageInfo info = pm.getPackageInfo("com.android.vending", PackageManager.GET_ACTIVITIES); 
      String label = (String) info.applicationInfo.loadLabel(pm); 
      app_installed = (label != null && !label.equals("Market")); 
    } 
    catch (PackageManager.NameNotFoundException e) 
    { 
      app_installed = false; 
    } 
    return app_installed; 
} 
+0

'isAmazonMarketplaceInstalled'에 상응하는 것이 무엇인지 아십니까? 또는 'label'의 가치는 Amazon 컨텍스트에서 무엇이 될까요? –

+0

미안하지만, 빛나다하지 마세요.하지만 앱 패키지 이름을 알아낼 수 있다면 정말 필요한 것입니다. 그것은'com.amazon '이 될 것입니다. '가능성이 큽니다. 나는'com.amazon. *'과 일치하는 모든 패키지를 출력하고 app 패키지가 무엇인지 살펴보기위한 빠른 테스트를 작성한다. – Ali

+0

패키지 이름은'com.amazon.venezia' 가능성이 큽니다. – Ali

1

당신은이 훨씬 단순화 된 솔루션을 시도 할 수 있습니다 :

public boolean isGooglePlayAvailable() { 
     boolean googlePlayStoreInstalled; 
     int val= GooglePlayServicesUtil.isGooglePlayServicesAvailable(LocationActivity.this); 
     googlePlayStoreInstalled = val == ConnectionResult.SUCCESS; 
     return googlePlayStoreInstalled; 
    } 
+2

올바르지 않습니다. 이렇게하면 Google Play 스토어가 아니라 시장을 타겟으로하는 의도를 시작하는 Google Play 스토어 '앱'을 확인할 수 있습니다. – Ian

0

이는 사용자가 다시 인증 즉 대해 또는 업데이트 뭔가를 할 수있는 '상태를 허용하는 아마 더 좋은 예이다. GCM client example project의 코드를 기반으로 :

public static boolean checkPlayServices(Activity activity) { 
     int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(activity); 
     if (resultCode != ConnectionResult.SUCCESS) { 
      if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) { 
       GooglePlayServicesUtil.getErrorDialog(resultCode, activity, 
         PLAY_SERVICES_RESOLUTION_REQUEST).show(); 
      } else { 
       Toast.makeText(activity.getApplicationContext(), "This device is not supported.", Toast.LENGTH_LONG).show(); 
       activity.finish(); 
      } 
      return false; 
     } 
     return true; 
    } 
+0

올바르지 않습니다. 이렇게하면 Google Play 스토어가 아니라 시장을 타겟으로하는 의도를 시작하는 Google Play 스토어 '앱'을 확인할 수 있습니다. –

0

당신은 코드의 간단한 조각을 사용할 수 있습니다 쉬운 및 GooglePlayServicesUtil를 사용하여 바퀴를 다시 발명하지에 대한 고려 지점 :

public static boolean isPlayStoreInstalled(Context context){ 
try { 
    context.getPackageManager() 
      .getPackageInfo(GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0); 
    return true; 
} catch (PackageManager.NameNotFoundException e) { 
    return false; 
} 
} 

을 이것은 당신의 종속성이을 추가해야합니다 :

compile 'com.google.android.gms:play-services-base:[PLAY_SERVICES_VERSION]' 

최신 play-services 버전은 지금 : 10.0.1

관련 문제