检查密码在 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
.
我正在尝试使用 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
.