Основная проблема заключается в том, что API Facebook еще не готов для всех типов отображения, и диалоговое окно друзей не может быть отображено для мобильного дисплея. Что вы можете сделать, это изменить библиотеку Android для Facebook: если вы открываете диалоговое окно, а не открываете диалоговое окно, вместо «touch» и www.facebook.com вместо «m.facebook.com», в окне появится соответствующее окно. Стандартные библиотеки Facebook WebView.
Для этого измените функцию диалога в Facebook.java следующим образом:
protected static String DIALOG_BASE_URL = "https://m.facebook.com/dialog/";
protected static String DIALOG_BASE_URL_FOR_MISSING_SCREENS = "https://www.facebook.com/dialog/";
public void dialog(Context context, String action, Bundle parameters,
final DialogListener listener) {
boolean missingScreen = action.contentEquals("friends") ? true : false;
String endpoint = missingScreen ? DIALOG_BASE_URL_FOR_MISSING_SCREENS : DIALOG_BASE_URL;
endpoint += action;
parameters.putString("display", missingScreen ? "popup" : "touch");
parameters.putString("redirect_uri", REDIRECT_URI);
if (action.equals(LOGIN)) {
parameters.putString("type", "user_agent");
parameters.putString("client_id", mAppId);
} else {
parameters.putString("app_id", mAppId);
}
if (isSessionValid()) {
parameters.putString(TOKEN, getAccessToken());
}
String url = endpoint + "?" + Util.encodeUrl(parameters);
if (context.checkCallingOrSelfPermission(Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED) {
Util.showAlert(context, "Error",
"Application requires permission to access the Internet");
} else {
new FbDialog(context, url, listener).show();
}
}
После этого вы можете удалить двойную строку заголовка из диалогового окна. Перейдите к FbDialog.java и вставьте что-то похожее на onPageFinished:
if (url.contains("friends?")) {
mTitle.setHeight(0);
mTitle.setVisibility(View.INVISIBLE);
}