检查密码在 Firebase 上是否是临时密码 Android

Check if the password is temporary on Firebase Android

我正在尝试使用 authData.getProviderData().get("isTemporaryPassword") Android API 中的方法检查密码是否为临时密码。虽然方法 returns literally "true" 在日志中打印时,如果我使用该方法重定向到新的 Activity 检查 if 条件,如

 if (authData.getProviderData().get("isTemporaryPassword")){
                        Intent intent = new Intent(MainActivity.this,PasswordReset.class);
                        Bundle bundle = new Bundle();
                        intent.putExtra("email",email.getText().toString());
                        intent.putExtra("password",password.getText().toString());
                        startActivity(intent);

它说 "Incompatible Types Required: boolean Found:java.Lang.Object"

我是不是漏掉了什么??

这个解决方案对我有用

if(authData.getProviderData().get("isTemporaryPassword").equals(true))

由于 if() 本身会检查条件是否为真,我不明白为什么 等于 true 解决了我的问题问题。我认为这不是一个合适的解决方案,但它确实有效。

方法#getProviderData()returns一个Map<String, Object>。这就是为什么当您 #get() 值时,它是一个 Object。由于您知道这是一个布尔值,因此可以将其转换为 Boolean 以在 if 条件下使用:

if ((Boolean)authData.getProviderData().get("isTemporaryPassword")) { …

您不能将 Object 放在 if 条件中,只能 boolean。你可以放一个 Boolean 因为自动装箱会小心并转换为 boolean.

这也解释了为什么 .equals(true) 测试有效。当您这样做时,方法 .equals 将进行转换以测试存储在此对象中返回的值是否等于 true.