2013-06-18 8 views
3

내 응용 프로그램은 app에 FB AuthButton을 사용합니다. 기기에 설치된 FB 앱이없는 경우 사용자는 브라우저에서 m.facebook으로 이동하여 로그인합니다. 현재 FB 앱이 설치되어있는 경우 fb 맞춤 URL (fbconnect)을 사용하면 FB 앱으로 로그인 할 수 있습니다.설치된 Facebook apk의 버전을 확인하십시오.

이전 버전의 FB 앱은 맞춤 URL을 인식하지 못하고 브라우저로 넘겨주지 않습니다. (이 문제는 : Facebook SDK 3.0 with old Facebook app version redirects to browser and gets stuck)

장치에 설치된 FB 응용 프로그램의 버전을 어떻게 확인할 수 있습니까? 이전 버전의 FB 앱에서이 작업을 수행 할 수 있다면 브라우저에 보내거나 webdialoug를 사용합니다.

내가 찾은 가장 가까운 getPackageManager()를 사용하고 있습니다. getApplicationInfo ("com.example.name", 0) 하지만 APK 버전을 반환 할 수 있는지 확신 할 수 없습니다.

+0

(http://stackoverflow.com/questions/17131868/facebook-sdk-3-0-with-old-facebook-app-version-redirects-to-browser-and-gets-stu) – thepoosh

답변

3
context.getPackageManager().getPackageInfo(packageName, 
    PackageManager.GET_SIGNATURES).versionCode 

실제로 페이스 북 버전 코드 (버전 이름과 다름)가 반환됩니다. 일부 파고 들자 마자 우리는 Facebook 버전 1.9.8 이상이 버전 코드 버전 코드 40477+ 인 것으로 나타났습니다.

더 이상 사용되지 않는 Facebook.java 클래스를 사용하고 있으므로 validateAppSignatureForPackage()가 수정되어 작동하는 것 같습니다! 당신이 스스로를 테스트하려면

private boolean validateAppSignatureForPackage(Context context, String packageName) 
{ 
    PackageInfo packageInfo; 
    try 
    { 
     packageInfo = context.getPackageManager().getPackageInfo(packageName, 
          PackageManager.GET_SIGNATURES); 
     if(packageInfo.versionCode<40477) 
     { 
      Log.i("validateAppSignatureForPackage", 
        "Your facebook app version is prior to 1.9.8. Update your facebook app"); 
      return false; 
     } 
    } 
    catch (NameNotFoundException e) 
    { 
     Log.i("validateAppSignatureForPackage", e.getMessage()); 
     return false; 
    } 
    catch(Exception e) 
    { 
     Log.i("validateAppSignatureForPackage", e.getMessage()); 
     return false; 
    } 

    for (Signature signature : packageInfo.signatures) { 
     if (signature.toCharsString().equals(FB_APP_SIGNATURE)) { 
      return true; 
     } 
    } 
    return false; 
} 

, 당신은 여기에 페이스 북의 응용 프로그램의 이전 버전을 찾을 수 있습니다 http://www.androiddrawer.com/2274/download-facebook-for-android-1-9-7-app-apk/#.Uctn6Zwaux4

의 중복 가능성 [오래된 페이스 북 응용 프로그램 버전과 페이스 북 SDK 3.0은 브라우저 리디렉션 및 내동댕이]
+2

사용하지 않는 경우 수정 된'Facebook.java' 파일을 가지고 있다면'NativeProtocol.java'에서'validateSignature' 메소드를 수정해야합니다. –

관련 문제