gpt4 book ai didi

java - 如果用户在注册时没有从图库中选择任何照片,我如何提醒用户?

转载 作者:行者123 更新时间:2023-12-02 10:07:39 24 4
gpt4 key购买 nike

在注册页面,当用户点击“ImageUserPhoto”时,他可以从图库中选择一张图像。当他选择照片并填写所有给定字段时,我的代码工作正常。但如果他不选择任何照片,应用程序就会崩溃。如果他没有在我检查所有字段的同一部分中选择任何照片,我该如何发出警告?提前致谢!!

package com.ayon.austmart.activities;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;


import com.ayon.austmart.R;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.UserProfileChangeRequest;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import de.hdodenhof.circleimageview.CircleImageView;


public class RegisterActivity extends AppCompatActivity {

CircleImageView ImgUserPhoto;
static int PReqCode = 1;
static int REQUESCODE = 1;
Uri pickedImgUri;


private EditText userEmail, userPassword, userPassword2, userName;
private ProgressBar loadingProgress;
private Button regBtn;
private Intent homeIntent;

private FirebaseAuth mAuth;




@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);


userEmail = findViewById(R.id.Email);
userPassword = findViewById(R.id.Password);
userPassword2 = findViewById(R.id.ConfirmPassword);
userName = findViewById(R.id.Name);
loadingProgress = findViewById(R.id.progressBarRegister);
regBtn = findViewById(R.id.buttonRegister);
loadingProgress.setVisibility(View.INVISIBLE);

mAuth = FirebaseAuth.getInstance();

ImgUserPhoto = findViewById(R.id.avatar);



regBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
regBtn.setVisibility(View.INVISIBLE);
loadingProgress.setVisibility(View.VISIBLE);
final String email = userEmail.getText().toString();
final String password = userPassword.getText().toString();
final String password2 = userPassword2.getText().toString();
final String name =userName.getText().toString();

if(email.isEmpty() || name.isEmpty() || password.isEmpty() || password2.isEmpty() || !password.equals(password2))
{
//something goes wrong... display an error message
showMessage("Please verify full fields!!");

regBtn.setVisibility(View.VISIBLE);
loadingProgress.setVisibility(View.INVISIBLE);




}

else
{


//Everything is ok..

createUserAccount(email,name,password);


}
}
});



ImgUserPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

if(Build.VERSION.SDK_INT >= 22)
{
checkAndRequestForPermission();
}

else
{
openGallery();
}


}
});

}

private void createUserAccount(String email, final String name, String password) {

//this method create user account with valid email and pass


mAuth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
//user account is created successfully
showMessage("Account Created!");
//now update the pro pic and username

updateUserInfo(name,pickedImgUri,mAuth.getCurrentUser());

}

else
{
showMessage("Account creation failed"+task.getException().getMessage());
regBtn.setVisibility(View.VISIBLE);
loadingProgress.setVisibility(View.INVISIBLE);
}
}
});





}


private void updateUserInfo(final String name, Uri pickedImgUri, final FirebaseUser currentUser){

StorageReference mStorage = FirebaseStorage.getInstance().getReference().child("user_photos");
final StorageReference imageFilePath = mStorage.child(pickedImgUri.getLastPathSegment());
imageFilePath.putFile(pickedImgUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//image uploaded successfully
//getting image url

imageFilePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// uri contains user image url
UserProfileChangeRequest profileUpdate = new UserProfileChangeRequest.Builder()
.setDisplayName(name)
.setPhotoUri(uri)
.build();


currentUser.updateProfile(profileUpdate)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {

if(task.isSuccessful())
{
//user info updated successfully

showMessage("Register Complete!");
updateUI();
}

}
});


}
});

}
});



}

private void updateUI() {

homeIntent = new Intent(getApplicationContext(), Home.class);
startActivity(homeIntent);
finish();


}

//message show
private void showMessage(String message) {
Toast.makeText(getApplicationContext(),message,Toast.LENGTH_LONG).show();

}

private void openGallery() {

//Open gallery intent and wait for user to pick an image

Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent,REQUESCODE);


}


public void checkAndRequestForPermission()
{
if(ContextCompat.checkSelfPermission(RegisterActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
{
if(ActivityCompat.shouldShowRequestPermissionRationale(RegisterActivity.this,Manifest.permission.READ_EXTERNAL_STORAGE))
{
Toast.makeText(RegisterActivity.this,"Please accept for required permission",Toast.LENGTH_SHORT ).show();
}

else
{
ActivityCompat.requestPermissions(RegisterActivity.this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},PReqCode);
}


}

else
openGallery();


}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if(resultCode == RESULT_OK && requestCode == REQUESCODE && data !=null)
{
//user has successfully picked an image...
//saving its reference to a Uri variable

pickedImgUri = data.getData();
ImgUserPhoto.setImageURI(pickedImgUri);


}
}
}

最佳答案

如果用户没有从图库中选择图像,则您的pickedImgUri为空。

因此,当您在单击注册按钮时调用 createUserAccount() 且用户未选择图像pickedImgUri 时,不会根据您的代码进行更新。因此 updateUserInfo() 将无法调用导致崩溃的异常。

请添加一个空检查器,例如

if(pickedImgUri!=null){
//then update the user account
}

如果您有兴趣强制用户选择个人资料照片,则只需使用上面的检查器并提醒用户请先选择照片,但我建议不要这样做。并不是每个人都喜欢上传照片。当用户不想更新/删除头像时,请使用任何通用头像 png 文件。快乐编码

关于java - 如果用户在注册时没有从图库中选择任何照片,我如何提醒用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55227913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com