Tôi đã thêm thông tin đăng nhập facebook với xác thực firebase trên ứng dụng của mình, nhưng xác thực đăng nhập chỉ hoạt động từ API Android 24.Đăng nhập Facebook chỉ hoạt động từ API 24 - Lớp mô tả mô-đun cục bộ cho com.google.firebase.auth không tìm thấy. lỗi
Khi tôi cố gắng sử dụng API cấp thấp hơn, màn hình bị đóng băng và ứng dụng ngừng hoạt động.
Quá cao, hầu hết người dùng có số thấp hơn API level.
Thật vậy, tôi dự định phát hành ứng dụng cho các cấp API thấp hơn.
Mã tôi đang sử dụng ở dưới.
public class ConfigurationActivity extends Activity {
Button b_v_mm,b_som;
LoginButton loginButton;
CallbackManager callbackManager;
// [START declare_auth]
private FirebaseAuth mAuth;
// [END declare_auth]
private void handleFacebookAccessToken(AccessToken token) {
Log.d("FireBase", "handleFacebookAccessToken:" + token);
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("FireBase", "signInWithCredential:success");
FirebaseUser user = mAuth.getCurrentUser();
//updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w("FireBase", "signInWithCredential:failure", task.getException());
//Toast.makeText(FacebookLoginActivity.this, "Authentication failed.",
// Toast.LENGTH_SHORT).show();
//updateUI(null);
}
// ...
}
});
}
// [START on_start_check_user]
@Override
public void onStart() {
super.onStart();
Log.d("FireBase", "onStart");
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = mAuth.getCurrentUser();
//updateUI(currentUser);
}
// [END on_start_check_user]
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("LoginFace", "LoginFace - onActivityResult");
super.onActivityResult(requestCode, resultCode, data);
Log.d("LoginFace", "LoginFace - onActivityResult");
callbackManager.onActivityResult(requestCode, resultCode, data);
Log.d("LoginFace", "LoginFace - After callbackManager");
/*
if (AccessToken.getCurrentAccessToken() != null) {
Log.d("AjudaFace", "AjudaFace - logout");
LoginManager.getInstance().logOut();
}*/
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_configuration);
//Botãp da barra de ferramentas que faz retornar para o Menu principal.
b_v_mm = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_v_mm);
b_v_mm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ConfigurationActivity.this, MainMenu.class);
startActivity(intent);
finish();
}
});
b_som = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_som);
//Altera opções de som.
b_som.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Carrega opções de texto do botão, armazenadas no repositório de strings
String s_som_on = getString(R.string.b_som_on);
String s_som_off = getString(R.string.b_som_off);
//Caso o som esteja desligado, o desliga.
if(b_som.getText().equals(s_som_on)) {
b_som.setText(s_som_off);
}
else //Caso o som esteja desligado, o liga.
if (b_som.getText().equals(s_som_off)){
b_som.setText(s_som_on);
}
}
}
);
callbackManager = CallbackManager.Factory.create();
// ...
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("email","public_profile");
Log.d("LoginFace", "LoginFace - Button Created");
// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
Log.d("LoginFace", "LoginFace - Sucesso");
Toast.makeText(getApplicationContext(),
"LOGIN REALIZADO", Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Log.d("LoginFace", "LoginFace - Cancelado");
Toast.makeText(getApplicationContext(),
"LOGIN CANCELADO", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
Log.d("LoginFace", "LoginFace - Erro");
Toast.makeText(getApplicationContext(),
"LOGIN Erro", Toast.LENGTH_LONG).show();
Log.d("LoginFace", exception.toString());
}
});
}
}
Đối tượng sử dụng trong hoạt động MyApplication
import android.app.Application;
import android.content.Context;
** Tất cả các đối tượng sử dụng trong dự án được liệt kê ở trên
API 23 log:
12-02 17:22 : 26.900 2668-2745 /? D/EGL_emulation: eglMakeCurrent: 0xaa9ba4e0: ver 2 0 (tinfo 0xac3853a0)
[ 12-02 17:22:26.949 2668: 3361 D/ ] HostConnection::get() New Host Connection established 0xa19c5800, tid 3361 [ 12-02 17:22:26.950 2668: 3361 W/ ] Unrecognized GLES max version string in extensions: ANDROID_EMU_CHECKSUM_HELPER_v1
ANDROID_EMU_dma_v1 12-02 17: 22: 26,977 2668-3361 /? D/EGL_emulation: eglCreateContext: 0xaa9ba900: maj 2 min 0 rcv 2 12-02 17: 22: 26.978 2668-3361 /? D/EGL_emulation: eglMakeCurrent: 0xaa9ba900: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824 12-02 17: 22: 27.135 2668-3361 /? D/EGL_emulation: eglCreateContext: 0xaa9ba9c0: maj 2 min 0 rcv 2 12-02 17: 22: 27.136 2668-3361 /? D/EGL_emulation: eglMakeCurrent: 0xaa9ba9c0: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 29.740 2668-2668/com.cerveja.qof.pedro.qof_cerveja W/BindingManager: Không thể gọi definedVisibility() - không bao giờ thấy một kết nối cho pid: 2668 12-02 17: 22: 32.649 2668-2745/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba4e0: ver 2 0 (tinfo 0xac3853a0) 12-02 17: 22: 32.650 2668-2745/com.cerveja.qof.pedro.qof_cerveja E/Bề mặt: getSlotFromBufferLocked: bộ đệm không xác định: 0xb40bdc00 12-02 17: 22: 32.676 2668-3361/com.cerveja.qof.pedro .qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba900: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 32.687 26 68-3361/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba9c0: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 32.704 2668-2745/com.cerveja.qof.pedro .qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba4e0: ver 2 0 (tinfo 0xac3853a0) 12-02 17: 22: 32,716 2668-2745/com.cerveja.qof.pedro.qof_cerveja E/eglCodecCommon: glUtilsParamSize: param unknow 0x00008cdf 12-02 17: 22: 32.767 2668-3361/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba900: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 27: 05.115 2668-2711/com.cerveja.qof.pedro.qof_cerveja W/DynamiteModule: Local mô-đun lớp mô tả cho không tìm thấy com.google.firebase.auth.
một thức Đây có lẽ là nguyên nhân gây ra lỗi:
12-02 17: 27: 05.115 2668-2711/com.cerveja.qof.pedro.qof_cerveja W/DynamiteModule: Local mô-đun lớp mô tả cho com Không tìm thấy .google.firebase.auth.
Tôi có thể làm gì để hạ cấp API được yêu cầu?
mức api của tôi là 15 và hoạt động giống như nét duyên dáng – androidXP
Có thể có sự cố với phụ thuộc xây dựng của bạn hoặc phiên bản dịch vụ của Google Play trên thiết bị của bạn. Giải thích thêm về những gì không thành công trên các thiết bị có API dưới 23. –
Làm cách nào để khám phá? Ứng dụng này chỉ đóng băng, nó không trỏ bất kỳ lỗi nào trên logcat. – Siqueira