context.getPackageManager().getPackageInfo(packageName,
PackageManager.GET_SIGNATURES).versionCode
確實返回facebook版本代碼(與版本名稱不同)。經過一番深入研究,我們發現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;
}
如果你想這個測試自己,你可以找到Facebook的應用程序在此之前的版本: http://www.androiddrawer.com/2274/download-facebook-for-android-1-9-7-app-apk/#.Uctn6Zwaux4
的可能重複[舊的Facebook應用程序版本的Facebook SDK 3.0重定向到瀏覽器和卡] (http://stackoverflow.com/questions/17131868/facebook-sdk-3-0-with-old-facebook-app-version-redirects-to-browser-and-gets-stu) – thepoosh