Чтобы мое приложение зарегистрировало пользователя, все, что оно заполняет, должно быть заполнено.Однако, когда я выбираю изображение при нажатии на вид изображения;это не подходит, и после заполнения другой детали я не могу создать нового пользователя из-за того, что изображение не заполняется.У меня нет ошибок в моем logcat. Он прекратил создавать нового пользователя только после реализации части изображения в коде.
package com.example.appdemo;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
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.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
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.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.io.IOException;
public class RegistrationActivity extends AppCompatActivity {
private EditText userName, userPassword, userEmail,userAge;
private Button regButton;
private TextView userLogin;
private ImageView userProfilePic;
private FirebaseAuth firebaseAuth;
String email, name, age, password;
private FirebaseStorage firebaseStorage;
private static int PICK_IMAGE = 123;
Uri imagePath;
private StorageReference storageReference;
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == PICK_IMAGE && requestCode == RESULT_OK && data.getData() != null){
imagePath = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),imagePath);
userProfilePic.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
setupUIViewas();
firebaseAuth = FirebaseAuth.getInstance();
firebaseStorage = FirebaseStorage.getInstance();
storageReference = firebaseStorage.getReference();
userProfilePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("image/*");// for document //application/* audio/* mp3/*
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "select image"),PICK_IMAGE);
}
});
regButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(validate()){
//upload data to database
String user_email = userEmail.getText().toString().trim();
String user_password = userPassword.getText().toString().trim();
firebaseAuth.createUserWithEmailAndPassword(user_email,user_password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
//have to put the verification code here.
sendUserData();
// signs out user after registration and send you to login
firebaseAuth.signOut();
Toast.makeText(RegistrationActivity.this,"Registration successful",Toast.LENGTH_SHORT).show();
finish();
startActivity(new Intent(RegistrationActivity.this,MainActivity.class));
}else{ Toast.makeText(RegistrationActivity.this,"Registration failed please try again",Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
userLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(RegistrationActivity.this,MainActivity.class));
}
});
}
private void setupUIViewas(){
userName = (EditText) findViewById(R.id.etUserName);
userPassword = (EditText) findViewById(R.id.etUserPassword);
userEmail = (EditText) findViewById(R.id.etUserEmail);
regButton = (Button) findViewById(R.id.btnRegister);
userLogin = (TextView) findViewById(R.id.tvUserLogin);
userAge = (EditText) findViewById(R.id.etAge);
userProfilePic = (ImageView) findViewById(R.id.ivProfile);
}
private Boolean validate(){
Boolean result = false;
name = userName.getText().toString();
password = userPassword.getText().toString();
email = userEmail.getText().toString();
age = userAge.getText().toString();
if(name.isEmpty()|| password.isEmpty()||email.isEmpty() || age.isEmpty() || imagePath == null){
Toast.makeText(this, "Please fill in all the details", Toast.LENGTH_SHORT).show();
}else {
result = true;
}
return result;
}
private void sendUserData(){
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference myref = firebaseDatabase.getReference(firebaseAuth.getUid());
StorageReference imageReference = storageReference.child(firebaseAuth.getUid()).child("Images").child("Profile Pic");//User Id/Images/profile_pic.jpg
UploadTask uploadTask = imageReference.putFile(imagePath);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(RegistrationActivity.this,"File upload failed!",Toast.LENGTH_SHORT).show();
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(RegistrationActivity.this,"File upload successful!",Toast.LENGTH_SHORT).show();
}
});
UserProfile userProfile = new UserProfile(age,email,name);
myref.setValue(userProfile);
}
}