java.lang.NoSuchMethodException:android.os.MessageQueue#enableMonitor()
更新的问题 我有一个启动器活动java.lang.NoSuchMethodException:android.os.MessageQueue#enableMonitor(),java,android,firebase,Java,Android,Firebase,更新的问题 我有一个启动器活动UserEmailAuth,它有一个按钮来处理Firebase的GoogleSignIn用户登录。当我尝试将UserEmailAuth设置为LAUNCHER活动时,应用程序不会通过以下任何方法启动:USB安装、Emulator或生成的APK 但是,有趣的是,当我绕过用户登录并将我的MainActivity作为启动程序活动,然后从MainActivity按LogOut时,它会被重定向回UserEmailAuth,从那里可以正常工作 以下是跟踪,它不是一个错误,无论使用
UserEmailAuth
,它有一个按钮来处理Firebase的GoogleSignIn
用户登录。当我尝试将UserEmailAuth
设置为LAUNCHER
活动时,应用程序不会通过以下任何方法启动:USB安装、Emulator或生成的APK
但是,有趣的是,当我绕过用户登录并将我的MainActivity
作为启动程序活动,然后从MainActivity
按LogOut
时,它会被重定向回UserEmailAuth
,从那里可以正常工作
以下是跟踪,它不是一个错误,无论使用旁路方法还是原始方法都会生成
W/ReflectionUtils: java.lang.NoSuchMethodException: android.os.MessageQueue#enableMonitor()#bestmatch
at miui.util.ReflectionUtils.findMethodBestMatch(ReflectionUtils.java:338)
at miui.util.ReflectionUtils.findMethodBestMatch(ReflectionUtils.java:375)
at miui.util.ReflectionUtils.callMethod(ReflectionUtils.java:800)
at miui.util.ReflectionUtils.tryCallMethod(ReflectionUtils.java:818)
at android.os.BaseLooper.enableMonitor(BaseLooper.java:47)
at android.os.Looper.prepareMainLooper(Looper.java:112)
at android.app.ActivityThread.main(ActivityThread.java:6371)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:930)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:820)
V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@267c3e2
W/System: ClassLoader referenced unknown path: /data/app/com.bytebeetech.wildtripurafoundation-2/lib/arm64
W/ResourceType: No package identifier when getting name for resource number 0x00000000
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
I/FirebaseInitProvider: FirebaseApp initialization successful
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
I/FirebaseAuth: [FirebaseAuth:] Preparing to create service connection to gms implementation
W/ResourceType: No package identifier when getting name for resource number 0x00000000
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
D/AccessibilityManager: current package=com.bytebeetech.wildtripurafoundation, accessibility manager mIsFinalEnabled=false, mOptimizeEnabled=false, mIsUiAutomationEnabled=false, mIsInterestedPackage=false
I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2421)
at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:779)
at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:659)
I/art: at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:552)
at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:161)
I/art: at void com.bytebeetech.wildtripurafoundation.user.activities.UserEmailAuthentication.onCreate(android.os.Bundle) (UserEmailAuthentication.java:60)
at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6854)
I/art: at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1119)
at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2709)
at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2817)
at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
ProgressUtility.java
public class UserEmailAuthentication extends AppCompatActivity {
private FirebaseAuth firebaseAuth;
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private static final int RC_SIGN_IN = 101;
public static final String SHARED_PREFS = "sharedPreferences";
public static final String IS_ADMIN = "is_admin";
public String is_admin;
Button signUpButton;
GoogleSignInOptions gso;
GoogleSignInClient mGoogleSignInClient;
UserUtility userUtility = new UserUtility(UserEmailAuthentication.this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_email_authentication);
firebaseAuth = FirebaseAuth.getInstance();
init();
// Configure Google Sign In
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
// Build a GoogleSignInClient with the options specified by gso.
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
View view = findViewById(R.id.myProgressButton);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (userUtility.checkInternetConnection(getApplicationContext())) {
ProgressUtility progressUtility = new ProgressUtility(getApplicationContext(), v);
progressUtility.buttonActivated();
signIn();
} else {
userUtility.showSnackbar("You are not connected to the INTERNET", v, getApplicationContext());
}
}
});
}
@Override
protected void onStart() {
super.onStart();
checkUserProfile(firebaseAuth);
}
private void signIn() {
Log.d("Inside", "signIn: ");
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
Log.d("Inside", "onActivityResult: ");
firebaseAuthWithGoogle(account.getIdToken());
} catch (ApiException e) {
Toast.makeText(this, "SignIn Failed, Please Try Again", Toast.LENGTH_LONG).show();
startActivity(new Intent(UserEmailAuthentication.this, UserEmailAuthentication.class));
finish();
}
}
}
private void firebaseAuthWithGoogle(String idToken) {
// SHOW PROGRESS BAR
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
checkUserProfile(firebaseAuth);
} else {
Log.d("---------------", "------------------------");
Log.d("Error ","Message: "+task.getException());
Log.d("---------------", "------------------------");
}
}
// HIDE PROGRESS BAR
});
}
private void checkUserProfile(FirebaseAuth firebaseAuth) {
final FirebaseUser currentFirebaseUser = firebaseAuth.getCurrentUser();
if (currentFirebaseUser != null) {
String user_id = currentFirebaseUser.getEmail();
db.collection("users").document(user_id).get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists()) {
String is_admin = documentSnapshot.getString("is_admin");
saveSharedData(is_admin);
if(is_admin.equals("true")) {
Intent intent = new Intent(UserEmailAuthentication.this, AdminActivity.class);
View view = findViewById(R.id.myProgressButton);
ProgressUtility progressUtility = new ProgressUtility(getApplicationContext(), view);
progressUtility.buttonFinished();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(intent);
finish();
}
}, 3000);
} else if(is_admin.equals("false")) {
Intent intent = new Intent(UserEmailAuthentication.this, MainActivity.class);
startActivity(intent);
finish();
}
} else {
//String is_admin = documentSnapshot.getString("is_admin");
//saveSharedData(is_admin);
String user_email = currentFirebaseUser.getEmail();
String user_photo_url = currentFirebaseUser.getPhotoUrl().toString();
Intent intent = new Intent(UserEmailAuthentication.this, UserDataAuthentication.class);
startActivity(intent);
Toast.makeText(UserEmailAuthentication.this, "Passing Email: " + user_email, Toast.LENGTH_SHORT).show();
finish();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(UserEmailAuthentication.this, "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(this, "Please SignIn", Toast.LENGTH_SHORT).show();
}
}
public void saveSharedData(String is_admin) {
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(IS_ADMIN, is_admin);
editor.apply();
}
}
public class ProgressUtility {
private MaterialCardView materialCardView;
private ProgressBar progressBar;
private ConstraintLayout constraintLayout;
private TextView textView;
Animation fadeIn;
public ProgressUtility(Context context, View view) {
materialCardView = view.findViewById(R.id.cardViewProgressBtn);
constraintLayout = view.findViewById(R.id.constraintLayoutProgressBtn);
progressBar = view.findViewById(R.id.progressBar2);
textView = view.findViewById(R.id.msgText);
}
public void buttonActivated() {
progressBar.setVisibility(View.VISIBLE);
textView.setText("Please Wait...");
}
public void buttonFinished() {
constraintLayout.setBackgroundColor(materialCardView.getResources().getColor(R.color.colorPrimaryDark));
progressBar.setVisibility(View.GONE);
textView.setText("Done");
}
}
progress\u btn\u layout.xml
user\u email\u auth.xml
这是启动布局的类,它有一个Google登录按钮。即使我删除了sign选项并实现了一个简单的Toast,错误也是一样的
我还使缓存失效,重新启动、清理和重建,因为我不知道它来自哪里
我甚至不知道是因为Firebase版本冲突还是我的MIUI问题(小米版本冲突)。即使在模拟器上,它也有相同的错误
任何建议都有助于发布导致错误的代码。设身处地想一想:你能诊断出一个只不过是部分堆栈跟踪的问题吗?另外,请查看for MessageQueue。你看到那里有一个
enableMonitor()
方法吗?是的,如问题内容所述,它有一条消息,上面写着W/ReflectionUtils:java.lang.NoSuchMethodException:android.os.MessageQueue#enableMonitor()#bestmatch
@MarsAtomic还应该编辑什么?我已尝试添加所有必要的细节。请让我know@MarsAtomic当前位置请交叉核对问题。。我有很好的编辑。欢迎回来。
public class ProgressUtility {
private MaterialCardView materialCardView;
private ProgressBar progressBar;
private ConstraintLayout constraintLayout;
private TextView textView;
Animation fadeIn;
public ProgressUtility(Context context, View view) {
materialCardView = view.findViewById(R.id.cardViewProgressBtn);
constraintLayout = view.findViewById(R.id.constraintLayoutProgressBtn);
progressBar = view.findViewById(R.id.progressBar2);
textView = view.findViewById(R.id.msgText);
}
public void buttonActivated() {
progressBar.setVisibility(View.VISIBLE);
textView.setText("Please Wait...");
}
public void buttonFinished() {
constraintLayout.setBackgroundColor(materialCardView.getResources().getColor(R.color.colorPrimaryDark));
progressBar.setVisibility(View.GONE);
textView.setText("Done");
}
}