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