更新:
如Mark Venzke建议的那样启用日志记录,并使用this过程,我在每次登录尝试时都收到了这个警告(注意:使用HTC One S手机进行测试)。
07-05 20:14:50.582: W/PackageManager(605): Unable to load service info ResolveInfo{4171dbf0 com.htc.socialnetwork.facebook.remote.FacebookSyncService p=0 o=0 m=0x108000}
请注意 com.htc.socialnetwork.facebook.remote.FacebookSyncService 这一行,那么 HTC 设备需要额外的步骤吗?
此外,我附上了登录操作的代码:
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (isResumed) {
FragmentManager manager = getSupportFragmentManager();
int backStackSize = manager.getBackStackEntryCount();
for (int i = 0; i < backStackSize; i++) {
manager.popBackStack();
}
com.facebook.Settings.addLoggingBehavior(LoggingBehavior.REQUESTS);
if (state.isOpened()) {
Bundle params = new Bundle();
params.putString("fields", "id");
params.putString("limit", "1");
Request request = new Request(Session.getActiveSession(), "me", params, HttpMethod.GET, new Callback()
{
@Override
public void onCompleted(Response response)
{
if (response != null)
{
Log.d("AuthGraphResponse", response.toString());
long id;
try {
id = response.getGraphObject().getInnerJSONObject().getLong("id");
app.setFacebookId(id);
Log.d("UserID", Long.valueOf(id).toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
RequestAsyncTask task = new RequestAsyncTask(request);
task.execute();
showFragment(AUTH, false);
} else if (state.isClosed()) {
showFragment(UNAUTH, false);
}
}
}
更新2:
HTC是否有可能将默认Facebook应用程序的包名在所有设备(或其中一些设备)中更改为com.htc.socialnetwork.facebook(而不是com.facebook.katana),从而导致此冲突?我并不认为卸载默认应用程序并从Google Play安装Facebook是可接受的解决方案(此外,我认为默认应用程序无法卸载)。
更新3:
尚未解决。 19小时内授予100声望奖励!
更新4:
LogCat的另一个有趣行:
07-15 10:55:51.718: E/chromium(30475): external/chromium/net/disk_cache/stat_hub.cc:216: [0715/105551:ERROR:stat_hub.cc(216)] StatHub::Init - App com.facebook.katana isn't supported.