Android 在Firebase的电话身份验证中检索电话号码
我有主要活动和下一个活动。在主要活动中,我使用firebase的电话身份验证。一旦成功,我会将用户重定向到下一个活动。在下一个活动中,我需要用户的电话号码,他将该号码放在主活动中。我使用了Android 在Firebase的电话身份验证中检索电话号码,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我有主要活动和下一个活动。在主要活动中,我使用firebase的电话身份验证。一旦成功,我会将用户重定向到下一个活动。在下一个活动中,我需要用户的电话号码,他将该号码放在主活动中。我使用了getIntent传递电话号码,但当我关闭并重新打开我的应用程序时,它不起作用,因为我正在打开下一个活动,而不是在成功验证后重新打开的主要活动。我使用了firebaseAuth.getCurrentUser().getPhoneNumber() 但这并不奏效。请提供帮助。您可以使用SharedReference
getIntent
传递电话号码,但当我关闭并重新打开我的应用程序时,它不起作用,因为我正在打开下一个活动,而不是在成功验证后重新打开的主要活动。我使用了firebaseAuth.getCurrentUser().getPhoneNumber()
但这并不奏效。请提供帮助。您可以使用SharedReferences在主活动中存储电话号码,然后在下一个活动中检索。由于该值将存储在文件中,因此可以在重新打开“活动”时再次使用该值 要储存电话号码,请执行以下操作:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("PHONE_NUMBER", "XXX-XXXX-XXXX");
editor.apply();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
sharedPreferences.getString("PHONE_NUMBER", "RETURNED_VALUE_IF_KEY_DOES_NOT_EXIST");
要检索电话号码,请执行以下操作:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("PHONE_NUMBER", "XXX-XXXX-XXXX");
editor.apply();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
sharedPreferences.getString("PHONE_NUMBER", "RETURNED_VALUE_IF_KEY_DOES_NOT_EXIST");
有关SharedReferences的更多信息:
在Main活动中,确保按如下方式传递电话号码:
Intent i = new Intent(getApplicationContext(), NextActivity.class);
i.putStringExtra("phoneNumber", YOUR_EDIT_TEXT.getText().toString());
startActivity(i);
然后将“您的编辑文本”替换为用户输入电话号码的编辑文本
然后在您的下一个活动中,要获取电话号码,请使用以下代码:
Intent i = getIntent();
String phoneNumber = i.getStringExtra("phoneNumber");
因此,现在电话号码存储在变量phoneNumber中
要使用该电话号码登录,请参阅
希望这有帮助 如果存储了电话号码,则返回该号码,或者返回null。所以请检查一下你有没有电话号码 公共抽象字符串getPhoneNumber() 返回存储在Firebase中的用户电话号码 项目的用户数据库,如果不存在,则为null。这可以更新 随时调用updatePhoneNumber(PhoneAuthCredential) 如果 在包含凭据(AuthCredential)的登录上使用的AuthCredential 这些信息。此电话号码显示在用户部分 Firebase控制台的
你可以做这个简单的把戏 *在主活动中以字符串形式保存输入(即电话号码)
*在成功的身份验证过程中,将号码保存到下一个活动我只是在这样做,通常getPhoneNumber()应该可以工作,但是,如果您有多个已激活的登录方法或多个已激活电子邮件的帐户等,Firebase Auth可能会也可能不会给您提供电话号码/电子邮件地址。因此,在这种情况下,共享参考可能是更好的方法。此外,如果您认为这回答了您的问题,请接受答案。如果我第一次认为这种方法很好,但当用户卸载应用程序后,请再次安装。因此,当我们想要检索电话号码时,这是不可行的。正如我在问题中提到的,我这样做了,但在关闭appyes时该值不会持续存在,因为您必须将电话号码添加到firebase,正如我给您的链接所解释的那样。然后当用户退出并再次使用应用程序时,您可以通过firebase检索手机。如果您希望它在设备上而不是在服务器上,那么使用共享prefsi。您可以将电话号码存储到firebase实时数据库的服务器上。这应该有助于你无法工作,已经尝试过。关闭应用程序时会丢失值,SharedReferences也会发生同样的情况。编辑你的问题(显示代码),完成后给我留言