【问题标题】:How to fetch profile name from google activity and display in other activity layout [duplicate]如何从谷歌活动中获取个人资料名称并显示在其他活动布局中[重复]
【发布时间】:2016-05-30 13:06:05
【问题描述】:

您好,我正在尝试使用 google sdk 构建应用程序,我想在我拥有 EditText 的其他活动中显示配置文件名称。 例如:- GoogleActivity.java 到 UserInformation.java

我已经成功创建了 google 登录,所以现在我想从 GoogleActivity.java 获取配置文件名称并希望在 UserInformation.java 中显示 这是我的 USerInformation.java 代码

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_signin);
        signInToolbar = (Toolbar) findViewById(R.id.toolbar_signin);
        setSupportActionBar(signInToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        signInToolbar.setNavigationIcon(R.drawable.back_arrow);

        OtpVerify = (TextView) findViewById(R.id.OtpVerification);
        editTextUsername = (EditText) findViewById(R.id.editTextName);
        editTextEmail = (EditText) findViewById(R.id.editTextEmail);

        signInToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
        getSupportActionBar().setTitle(Html.fromHtml("<font color='#FFFFFF'>Sign Up</font>"));
        OtpVerify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OtpVerification();
            }
        });


    }

    private void OtpVerification() {

        LayoutInflater inflater = getLayoutInflater();
        View OtpDialongScreen = inflater.inflate(R.layout.otpverification, null);
        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setView(OtpDialongScreen);
        alert.setCancelable(false);
        final AlertDialog dialog = alert.create();
        dialog.show();

    }


}

谁能帮我在 EditText 中显示个人资料名称

【问题讨论】:

  • 所以基本上你想将字符串从 GoogleActivity 传递给 UserInformation 活动对吗??
  • @Firdoesh Khan 通过 intent.putExtra("name","xyz") 传递您的姓名并将其放入所需的活动中
  • 是的@himanshu1496 你是对的.. 我该怎么做

标签: java android api


【解决方案1】:

您可以使用以下代码从 Google API 获取用户信息。或者更多细节可以参考:https://developers.google.com/identity/sign-in/android/people#before_you_begin

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personEmail = acct.getEmail();
String personId = acct.getId();
Uri personPhoto = acct.getPhotoUrl();

现在,用户名在变量 personName 中。登录成功后,应用程序不会进入登录页面,所以最好将用户信息保存在SharedPreference中。创建一个类AppUtils.java

public class AppUtils {

private final static String SHARED_PREFS="AppUtils";
private SharedPreferences prefs;
private SharedPreferences.Editor edit;

public AppUtils(Context context) {
    prefs = context.getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE);
}

public void setUserName(String name) {

    edit = prefs.edit();
    edit.putString("name", name);
    edit.commit();
}

public String getUserName() {
    return prefs.getString("name", "");
}

}

因此,在您的 GoogleActivity.java 类中,在获取用户名后,通过调用函数 setUserName() 将其设置为共享首选项对象。

AppUtils utils=new AppUtils(UserInformation.this);
utils.setUserName(personName);

无论何时你想调用函数 getUserName()。在你的情况下:

AppUtils utils=new AppUtils(UserInformation.this);

editTextUsername = (EditText) findViewById(R.id.editTextName);
editTextEmail = (EditText) findViewById(R.id.editTextEmail);

editTextUsername.setText(utils.getUserName());

【讨论】:

  • UserInformation.this你能指导一下这是什么
  • 这是该活动的上下文。上下文是应用程序/对象当前状态的上下文。它提供诸如解析资源、获取对数据库和首选项的访问权限等服务。一个 android 应用程序有活动。它就像您的应用程序当前运行的环境的句柄。活动对象继承了 Context 对象。更多信息请参考链接:simplecodestuffs.com/what-is-context-in-android
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 2015-06-23
相关资源
最近更新 更多