2014-02-07 3 views
1

Google지도와 Google 탐색이 같은 패키지입니까?Google지도 및 탐색

내가 구글 탐색이 의도

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("google.navigation:ll="+toPosition.latitude+","+ toPosition.longitude)); 
startActivity(intent); 

을 실행하기 전에 설치되어 있는지 확인하려면 그리고 난 그

public boolean isGoogleNavInstalled() 
    { 
     try 
     { 
      ApplicationInfo info = getActivity().getPackageManager().getApplicationInfo("google.navigation", 0); 
      return true; 
     } 
     catch(PackageManager.NameNotFoundException e) 
     { 
      return false; 
     } 
    } 

를 설치 한 경우 확인하려면이 방법을 사용하지만이 항상 FALSE를 반환합니다. Google 탐색을위한 패키지의 정확한 이름은 무엇입니까? Google지도와 동일하다면 장치 및 API 수준과 관련하여 Google지도의 모든 버전이 탐색 기능을 제공한다고 가정하는 것이 좋습니다.

답변

2

Google지도와 Google 탐색은 같은 패키지입니까?

예.

은 내가 IntentPackageManagerresolveActivity()를 통해 같이 아무것도 해결되는지 확인하는 것입니다 사용자에게이 의도

더 많은 관련 실행하기 전에 구글 네비게이션이 설치되어 있는지 확인하고 싶습니다. 사용자가 요청을 처리하기 위해 다른 앱을 사용하고자하는 경우 이는 사용자의 특권입니다.

그러나 이것은 항상 당신이 당신의 장치에 존재하지 않는 패키지 이름을 전달되기 때문이다 FALSE

반환합니다.

Google 탐색을위한 패키지의 정확한 이름은 무엇입니까?

Google 내비게이션은 독립 패키지로 제공되지 않습니다. Google지도의 일부입니다.

Google지도와 동일한 경우 기기 및 API 수준과 관련하여 Google지도의 모든 버전에 탐색 기능이 포함되어 있다고 가정하는 것이 좋습니다.

탐색 부분에 분포 한계가있을 수 있습니다 나는 확실히 인해 현지 법률, 업스트림 데이터 제공 업체와 라이센스 조건 등으로, 그 가정하지 않을

이 훨씬 더 관련이 이유

당신이 IntentPackageManagerqueryIntentActivities() 또는 resolveActivity()를 사용하여, 뭔가 해결 소망하는 경우 당신모두 구글 네비게이션을 사용하려는 것을 의미하지 않는다 구글 네비게이션을 사용할 수 있습니다해서 당신을 위해 사용자가 .. 볼 수 있습니다.

어쨌든 Intent은 문서화되지 않은 Uri 구조에 의존하므로 Google지도조차도이를 존경한다는 보장은 없습니다.

+0

우수 답변! 고맙습니다. 나는 네비게이션을 위해 무엇을해야하는지 잘 모르겠다. 이 작업을 수행하는 표준 방법이 있습니까? – klifa

+0

@klifa : 사용자를 네비게이션으로 유도하는 공식'Intent '구조는 없습니다. 따라서'google.navigation :'의 사용은 얻는만큼 좋을 것입니다. 필자가 지적한 점은, 앱이 설치되는 것보다는'의도 '가 해결되는지 아닌지에 대해 걱정해야하며, 이와 같이 문서화되지 않은'우리 '를 사용할 때 호환성 문제가 발생하면 불평하지 말아야한다는 것이다. :-) – CommonsWare

+0

그것을 얻었다. 감사. – klifa

1
Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("google.navigation:q=" + point.getLat() + "," + point.getLon())); 
    if(!canHandleIntent(mActivity, intent)) { 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("market://detailsid=com.google.android.apps.maps")); 
    } 
    startActivity(intent); 

public boolean canHandleIntent(Context context, Intent intent){ 
    PackageManager packageManager = context.getPackageManager(); 
    List activities = packageManager.queryIntentActivities(
       intent, PackageManager.MATCH_DEFAULT_ONLY); 
     return !(activities == null || activities.size() == 0); 
} 

인 텐트가 인 텐트로 적절한 앱을 시작한 경우, 그렇지 않으면 Google지도의 Google Play 페이지를 엽니 다.