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