2016-01-16 6 views
0

Использование facebook sdk 4.6.0 Я пытаюсь использовать интеграцию с Facebook в моем приложении для Android. com.facebook.login.widget.LoginButton показывает следующие кнопки enter image description herefacebook Login button customization

Я хочу, чтобы изменить текст из «Вход с Facebook» на «FACEBOOK» только

Я попробовал почти все решения, предусмотренные ранее, но ни один из они работали для меня. Возможная причина я мог думать о том, что все ранее ответил на вопрос являются для facebook SDK 3.0, который, кажется, терпит неудачу на facebook SDK 4.6.0

Я пробовал:

  1. модификации LoginButton класса, но он заблокирован

  2. xmlns: facebook = "http://schemas.android.com/apk/res-auto", используя эту схему в LoginButton и меняя текст с помощью facbook: login_text = "LOGIN", facebook: com_facebook_login_text = "ВХОД", но оба не работали

Это моя зависимость для facebook SDk компиляции '' com.facebook.android:facebook-android-sdk:4.6.0

Это мой LoginButton XML

<com.facebook.login.widget.LoginButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/buttonRegisterFacebook" 
    android:padding="10dp" 
    /> 

Пожалуйста, предложите какой-нибудь способ изменить текст и изменить fb логотип размер изображения

Редактировать: Теперь я понимаю, почему ни один из ранее заявленных методов не работает для меня. Мои Facebook SDK файлы заблокированы

LoginButton.java file is locked

Я попытался разблокировку, нажав на кнопку блокировки в Боттум правом углу в андроида студии, но ничего не происходит. Любые предложения по разблокировке файлов FB SDK. Мой FB SDK версия 4.6.0

+0

Plz см. Это, если еще не найдено http://stackoverflow.com/questions/16314651/customize-android-facebook-login-button – VVB

ответ

0

После поиска много, я узнал за последний SDK Facebook 4.6.0, чтобы изменить текст кнопки входа FB, добавьте это в res/values ​​/ strings.XML

<string name="com_facebook_loginview_log_out_button">Your Logout Text</string> 
<string name="com_facebook_loginview_log_in_button_long">Your Login Text</string> 

Однако, если мы хотим иметь FB Войти функциональные кнопки в любой случайной кнопки

добавить следующие строки в ClickListener случайной кнопки («buttonLogin» в моем случае)

buttonLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LoginButton loginButton = new LoginButton(Login.this); 
      AccessTokenTracker accessTokenTracker = new AccessTokenTracker() { 
       @Override 
       protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) { 
        updateWithToken(newAccessToken); 
       } 
      }; 

      CallbackManager callbackManager = CallbackManager.Factory.create(); 
      loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 
      loginButton.registerCallback(callbackManager, callback); 
      loginButton.performClick(); 
} 

Я требуется только пользователям общедоступный профиль и адрес электронной почты

updateWithToken() идет как

private void updateWithToken(AccessToken currentAccessToken){ 
    if(currentAccessToken!=null){ 
     Log.v("MyApp", getClass().toString() + "updateWithToken:If(Token NonNull)"); 

     GraphRequest request = GraphRequest.newMeRequest(currentAccessToken, new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject object, GraphResponse response) { 
       Log.v("MyApp",getClass().toString() + response.toString()); 
       // Get facebook data from login 
       try { 
        Log.v("MyApp", getClass().toString() + object.toString()); // contains data string 
       } catch (JSONException e) { 
        Log.v("MyApp", getClass().toString() + "LoginJSON"); 
        e.printStackTrace(); 
       } 
       Intent intent = new Intent(Login.this, Home.class); // once data is received i wanted to open Home Activity 
       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(intent); 
       finish(); 
      } 
     }); 

     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } else { 
     Log.v("MyApp", getClass().toString() + "updateWithToken:Else(Token Null)"); 
    } 
}//updatewithtoken 

Также Override OnActivityResult в

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.v("MyApp", getClass().toString() + " Request:" + requestCode + " Result:" + resultCode); 
    if (requestCode==64206) { 
     Log.v("MyApp", getClass().toString() + " onActivityResult:If Facebook"); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
} 

я использовал журнал, чтобы найти запрос кода 64206 для facebook входа в систему.

0

Пожалуйста, измените здесь в коде LoginButton.java класса facebook SDK

protected void configureButton(
     final Context context, 
     final AttributeSet attrs, 
     final int defStyleAttr, 
     final int defStyleRes) { 
    super.configureButton(context, attrs, defStyleAttr, defStyleRes); 
    setInternalOnClickListener(new LoginClickListener()); 

    parseLoginButtonAttributes(context, attrs, defStyleAttr, defStyleRes); 

    if (isInEditMode()) { 
     // cannot use a drawable in edit mode, so setting the background color instead 
     // of a background resource. 
     setBackgroundColor(getResources().getColor(R.color.com_facebook_blue)); 
     // hardcoding in edit mode as getResources().getString() doesn't seem to work in 
     // IntelliJ 
     loginText = "Facebook"; 
    } else { 
     accessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(
        AccessToken oldAccessToken, 
        AccessToken currentAccessToken) { 
       setButtonText(); 
      } 
     }; 
    } 

    setButtonText(); 
} 
+0

Я попробовал, но класс LoginButton.java заблокирован. Я не могу его редактировать. Скажите, пожалуйста, как разблокировать его. –

+0

Перейдите в папку sdk java в Facebook и откройте класс LoginButton.java и измените setButtonText(); метод. –