Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Firebase的电话身份验证中检索电话号码_Android_Firebase_Firebase Authentication - Fatal编程技术网

Android 在Firebase的电话身份验证中检索电话号码

Android 在Firebase的电话身份验证中检索电话号码,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我有主要活动和下一个活动。在主要活动中,我使用firebase的电话身份验证。一旦成功,我会将用户重定向到下一个活动。在下一个活动中,我需要用户的电话号码,他将该号码放在主活动中。我使用了getIntent传递电话号码,但当我关闭并重新打开我的应用程序时,它不起作用,因为我正在打开下一个活动,而不是在成功验证后重新打开的主要活动。我使用了firebaseAuth.getCurrentUser().getPhoneNumber() 但这并不奏效。请提供帮助。您可以使用SharedReference

我有主要活动和下一个活动。在主要活动中,我使用firebase的电话身份验证。一旦成功,我会将用户重定向到下一个活动。在下一个活动中,我需要用户的电话号码,他将该号码放在主活动中。我使用了
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也会发生同样的情况。编辑你的问题(显示代码),完成后给我留言