Java 未将图像URL字符串获取到FirebaseDatabase

Java 未将图像URL字符串获取到FirebaseDatabase,java,android,firebase,firebase-realtime-database,firebase-storage,Java,Android,Firebase,Firebase Realtime Database,Firebase Storage,我希望我的firebase数据库使用用户配置文件pic图像URL进行初始化我尝试添加此文件,但我发现profileImageUrl变量未使用ImageUri变量进行初始化?请帮我完成这件事 我只想用来自URI变量但不是初始化的图像url字符串初始化第5个变量配置文件图像链接 这是我的项目日志 2020-05-31 11:23:23.475 23993-23993/com.ramzan.snnstocks D/WindowClient: Add to mViews: DecorView@3fca5

我希望我的firebase数据库使用用户配置文件pic图像URL进行初始化我尝试添加此文件,但我发现profileImageUrl变量未使用ImageUri变量进行初始化?请帮我完成这件事

我只想用来自URI变量但不是初始化的图像url字符串初始化第5个变量配置文件图像链接

这是我的项目日志

2020-05-31 11:23:23.475 23993-23993/com.ramzan.snnstocks D/WindowClient: Add to mViews: DecorView@3fca5d8[UserRegistration], this = android.view.WindowManagerGlobal@878094
2020-05-31 11:23:23.479 23993-23993/com.ramzan.snnstocks D/ViewRootImpl[UserRegistration]: hardware acceleration is enabled, this = ViewRoot{2607f29 com.ramzan.snnstocks/com.ramzan.snnstocks.UserRegistration,ident = 2}
2020-05-31 11:23:23.482 23993-23993/com.ramzan.snnstocks V/PhoneWindow: DecorView setVisiblity: visibility = 0, Parent = ViewRoot{2607f29 com.ramzan.snnstocks/com.ramzan.snnstocks.UserRegistration,ident = 2}, this = DecorView@3fca5d8[UserRegistration]
2020-05-31 11:23:23.688 23993-24035/com.ramzan.snnstocks D/OpenGLRenderer: CanvasContext() 0x90c11000 initialize window=0x90a6f700, title=com.ramzan.snnstocks/com.ramzan.snnstocks.UserRegistration
2020-05-31 11:23:26.588 23993-23993/com.ramzan.snnstocks V/PhoneWindow: DecorView setVisiblity: visibility = 4, Parent = ViewRoot{2607f29 com.ramzan.snnstocks/com.ramzan.snnstocks.UserRegistration,ident = 2}, this = DecorView@3fca5d8[UserRegistration]
2020-05-31 11:23:32.551 23993-23993/com.ramzan.snnstocks I/UserRegistration: OnActivityResult: RESULT OK
2020-05-31 11:23:32.566 23993-23993/com.ramzan.snnstocks V/PhoneWindow: DecorView setVisiblity: visibility = 0, Parent = ViewRoot{2607f29 com.ramzan.snnstocks/com.ramzan.snnstocks.UserRegistration,ident = 2}, this = DecorView@3fca5d8[UserRegistration]
2020-05-31 11:23:32.596 23993-24035/com.ramzan.snnstocks D/OpenGLRenderer: CanvasContext() 0x90c11000 initialize window=0x90a6f700, title=com.ramzan.snnstocks/com.ramzan.snnstocks.UserRegistration
2020-05-31 11:24:12.578 23993-23993/com.ramzan.snnstocks D/WindowClient: Remove from mViews: DecorView@3fca5d8[UserRegistration], this = android.view.WindowManagerGlobal@878094
2020-05-31 11:24:16.941 23993-23993/com.ramzan.snnstocks D/UserRegistration: onSuccess : https://firebasestorage.googleapis.com/v0/b/snn-stocks-c12fc.appspot.com/o/Profile_Image%2F9352682709.jpeg?alt=media&token=801f8e9d-cf5f-4d0a-890a-57823d50973a
这是我的用户注册活动

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
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.FirebaseApp;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.ramzan.snnstocks.Model.Users;
import com.squareup.picasso.Picasso;
import com.theartofdev.edmodo.cropper.CropImage;
import com.theartofdev.edmodo.cropper.CropImageView;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URI;

import de.hdodenhof.circleimageview.CircleImageView;

public class UserRegistration extends AppCompatActivity {

    private Spinner spinner;
    private CircleImageView mImageView;
    private static final int PICK_IMAGE = 101;
    private EditText et_name, et_mobile, et_pass;
    private Button btn_user;
    private static String name, mobile, pass, spinner_port_place,profile_image_url;

    private ProgressDialog loadingBar;
    private DatabaseReference mDatabase;
    private Bitmap bitmap;
    private static final String TAG = "UserRegistration";


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

        mImageView = findViewById(R.id.profile_image);
        loadingBar = new ProgressDialog(this);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        spinner = findViewById(R.id.spinner_port_place);

        ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(UserRegistration.this,
                android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.Port_Name));
        myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(myAdapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                spinner_port_place = parent.getItemAtPosition(position).toString();

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });


        // initializing UI components
        et_name = findViewById(R.id.textInputEditTextLayout_name);
        et_mobile = findViewById(R.id.textInputEditTextLayout_mobile);
        et_pass = findViewById(R.id.textInputEditTextLayout_pass);
        btn_user = findViewById(R.id.btn_user_registration);


        //onClick listner to Button

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

                name = et_name.getText().toString();
                mobile = et_mobile.getText().toString();
                pass = et_pass.getText().toString();

                if (name.isEmpty()) {
                    et_name.setError("Full Name Required");
                    et_name.requestFocus();

                } else if (mobile.isEmpty()) {
                    et_mobile.setError("Mobile Number is Required");
                    et_mobile.requestFocus();

                } else if (pass.isEmpty()) {
                    et_pass.setError("Choose Your Password");
                    et_pass.requestFocus();
                } else {


                    uploadData();


                }

            }
        });

        //OnClick Listner on Image View

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

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if (intent.resolveActivity(getPackageManager())
                        != null) {
                    startActivityForResult(intent, PICK_IMAGE);
                }

            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE) {
            switch (resultCode) {
                case RESULT_OK:

                    Log.i(TAG, "OnActivityResult: RESULT OK");
                    bitmap = (Bitmap) data.getExtras().get("data");
                    mImageView.setImageBitmap(bitmap);
                    break;

                case RESULT_CANCELED:
                    Log.i(TAG, "OnActivityResult: RESULT CANCELLED");
                    break;

                default:
                    break;

            }
        }
    }

    // upload data from here...

    private void uploadData() {

        loadingBar.setTitle("Registering Retailer....");
        loadingBar.setMessage("Please Wait While We Are Creating Retailer Database");
        loadingBar.setCanceledOnTouchOutside(false);

        loadingBar.show();

        handleUpload(bitmap);
        //Initialize Firebase Database;

        mDatabase = FirebaseDatabase.getInstance().getReference();

        createUserDatabase(name, mobile, pass, spinner_port_place, profile_image_url);
    }

    // profile image upload

    private void handleUpload(Bitmap bitmap) {

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

        final StorageReference reference = FirebaseStorage.getInstance().getReference().child("Profile_Image").child(mobile + ".jpeg");

        reference.putBytes(baos.toByteArray())
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Toast.makeText(UserRegistration.this, "Upload Successfull...", Toast.LENGTH_SHORT).show();
                        getDownloadUrl(reference);
                    }
                }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.e(TAG, "onFailure : ", e.getCause());
            }
        });


    }

    private void getDownloadUrl(StorageReference reference) {
        reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                profile_image_url = uri.toString();
                Log.d(TAG, "onSuccess : " + uri);
                initializeUrl(uri);
            }
        });
    }

    private void initializeUrl(Uri uri) {

        profile_image_url = uri.toString();
    }

    private void createUserDatabase(final String name, final String mobile, final String pass, final String spinner_port_place, final String profile_image_url) {

        mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (!(dataSnapshot.child("Users").child(mobile).exists() && !(dataSnapshot.child("Admin").child(mobile).exists()))) {

                    Users new_user = new Users(name, mobile, pass, spinner_port_place, profile_image_url);

                    mDatabase.child("Users").child(mobile).setValue(new_user).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            loadingBar.dismiss();
                            Toast.makeText(UserRegistration.this, "Your Account Has Been Created Successfully !", Toast.LENGTH_SHORT).show();
                            Intent intent = new Intent(UserRegistration.this, MainActivity.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            startActivity(intent);
                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            loadingBar.dismiss();
                            String msg;
                            msg = e.toString();
                            Toast.makeText(UserRegistration.this, "Error : " + msg, Toast.LENGTH_LONG).show();

                        }
                    });

                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

}
import androidx.annotation.NonNull;
导入androidx.annotation.Nullable;
导入androidx.appcompat.app.appcompat活动;
导入androidx.appcompat.widget.Toolbar;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.graphics.Bitmap;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.MediaStore;
导入android.util.Log;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.Toast;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.OnFailureListener;
导入com.google.android.gms.tasks.OnSuccessListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.FirebaseApp;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入com.google.firebase.storage.firebase存储;
导入com.google.firebase.storage.StorageReference;
导入com.google.firebase.storage.UploadTask;
导入com.ramzan.snnstocks.Model.Users;
导入com.squareup.picasso.picasso;
进口com.theartofdev.edmodo.croper.CropImage;
导入com.theartofdev.edmodo.croper.CropImageView;
导入java.io.ByteArrayOutputStream;
导入java.io.IOException;
导入java.net.URI;
导入de.hdodenhof.circleimageview.circleimageview;
公共类用户注册扩展了AppCompatActivity{
私人纺纱机;
私有CircleImageView-mImageView;
私有静态最终整型拾取图像=101;
私人编辑文本等_名称,等_移动,等_通行证;
私人按钮btn_用户;
私有静态字符串名称、移动、通行证、微调器、端口、配置文件、图像、url;
私有进程对话框加载栏;
私有数据库参考数据库;
私有位图;
私有静态最终字符串TAG=“UserRegistration”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u user\u registration);
mImageView=findviewbyd(R.id.profile\u图像);
loadingBar=新建进度对话框(此对话框);
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
微调器=findViewById(R.id.spinner\u port\u place);
ArrayAdapter myAdapter=新的ArrayAdapter(UserRegistration.this,
android.R.layout.simple_微调器_项,getResources().getStringArray(R.array.Port_名称));
myAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spinner.setAdapter(myAdapter);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
微调器_port_place=parent.getItemAtPosition(位置).toString();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
//初始化UI组件
et_name=findviewbyd(R.id.textinputtextlayout_name);
et_mobile=findviewbyd(R.id.textinputtextlayout_mobile);
et_pass=findViewById(R.id.textinputtextLayout_pass);
btn_user=findviewbyd(R.id.btn_user_注册);
//再次单击listner至按钮
btn_user.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
name=et_name.getText().toString();
mobile=et_mobile.getText().toString();
pass=et_pass.getText().toString();
if(name.isEmpty()){
et_name.setError(“需要全名”);
et_name.requestFocus();
}else if(mobile.isEmpty()){
et_mobile.setError(“需要手机号码”);
et_mobile.requestFocus();
}else if(pass.isEmpty()){
设置错误(“选择密码”);
et_pass.requestFocus();
}否则{
上传数据();
}
}
});
//在图像视图上单击列表器
mImageView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(MediaStore.ACTION\u IMAGE\u CAPTURE);
if(intent.resolveActivity(getPackageManager())
!=空){
startActivityForResult(意图、拾取图像);
}
}
});
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==拾取图像){
开关(结果代码){
个案结果(正常):
Log.i(标记“OnActivityResult:RESULT OK”);
位图=(位图)data.getExtras().get(“数据”);
设置图像位图(位图);
打破
个案结果(已取消):
Log.i(标记“OnActivityResult:结果已取消”);
打破
private void uploadData() {

    loadingBar.setTitle("Registering Retailer....");
    loadingBar.setMessage("Please Wait While We Are Creating Retailer Database");
    loadingBar.setCanceledOnTouchOutside(false);

    loadingBar.show();

    handleUpload(bitmap);
}

private void initializeUrl(Uri uri) {

    profile_image_url = uri.toString();

    //Initialize Firebase Database;

    mDatabase = FirebaseDatabase.getInstance().getReference();

    createUserDatabase(name, mobile, pass, spinner_port_place, profile_image_url);
}