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

时间:2016-04-02 21:05:02

标签: android firebase firebase-authentication

我正在尝试使用authData.getProviderData().get("isTemporaryPassword") Android API中的方法,用于检查密码是否为临时密码。虽然该方法在日志中打印时返回字面 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);

它说 “所需类型不兼容:找不到布尔值:java.Lang.Object”

我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

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

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

您无法将Object置于if条件中,只能boolean。您可以设置Boolean,因为自动装箱会照顾并转换为boolean

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

答案 1 :(得分:1)

此解决方案适合我

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

由于if()本身会检查真实情况,我不明白为什么等于 true 解决了我的问题。我不认为这是一个合适的解决方案,但它正在发挥作用。