Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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_Android Fragments_Firebase Authentication - Fatal编程技术网

Android上传Firebase认证用户的个人资料图片

Android上传Firebase认证用户的个人资料图片,android,firebase,android-fragments,firebase-authentication,Android,Firebase,Android Fragments,Firebase Authentication,我正在尝试将图像添加到Firebase存储中,每个用户都可以从其文件或相机上载其个人资料图片,并且应该将其存储在自己的文件夹中,该文件夹的名称为uid。我有以下代码,但是按下ImageView没有任何作用: public class ProfileFragment extends Fragment { CircleImageView profileImage; TextView email; public StorageReference storageRef;

我正在尝试将图像添加到Firebase存储中,每个用户都可以从其文件或相机上载其个人资料图片,并且应该将其存储在自己的文件夹中,该文件夹的名称为uid。我有以下代码,但是按下ImageView没有任何作用:

public class ProfileFragment extends Fragment {

    CircleImageView profileImage;
    TextView email;

    public StorageReference storageRef;
    FirebaseStorage storage;


    public static ProfileFragment newInstance() {
        ProfileFragment profileFragment = new ProfileFragment();
        return profileFragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_profile, container, false);

        profileImage = view.findViewById(R.id.profile_image);
        email = view.findViewById(R.id.email);

        String user = FirebaseAuth.getInstance().getCurrentUser().getEmail();
        email.setText(user);

        storageRef = storage.getReference();

        return view;
    }

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

        final String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
        final Uri contentURI = data.getData();

        profileImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(contentURI != null) {

                    StorageReference childRef = storageRef.child("/images/"+ userUid +".jpg");

                    UploadTask uploadTask = childRef.putFile(contentURI);
                    uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            Toast.makeText(getActivity(), "Upload successful", Toast.LENGTH_SHORT).show();
                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(getActivity(), "Upload Failed" + e, Toast.LENGTH_SHORT).show();
                        }
                    });
                }
                else {
                    Toast.makeText(getActivity(), "Select an image", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}
公共类ProfileFragment扩展了片段{
圆形图像查看轮廓图像;
TextView电子邮件;
公共存储参考storageRef;
火基储存;
公共静态ProfileFragment newInstance(){
ProfileFragment=新的ProfileFragment();
返回片段;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment_外形,容器,假);
profileImage=view.findviewbyd(R.id.profile\u image);
email=view.findviewbyd(R.id.email);
字符串user=FirebaseAuth.getInstance().getCurrentUser().getEmail();
email.setText(用户);
storageRef=storage.getReference();
返回视图;
}
@凌驾
activityresult上的公共void(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
最后一个字符串userUid=FirebaseAuth.getInstance().getCurrentUser().getUid();
最终Uri contentURI=data.getData();
profileImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(contentURI!=null){
StorageReference childRef=storageRef.child(“/images/”+userUid+”.jpg”);
UploadTask UploadTask=childRef.putFile(contentURI);
uploadTask.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
Toast.makeText(getActivity(),“上载成功”,Toast.LENGTH_SHORT.show();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(getActivity(),“上载失败”+e,Toast.LENGTH_SHORT.show();
}
});
}
否则{
Toast.makeText(getActivity(),“选择图像”,Toast.LENGTH_SHORT.show();
}
}
});
}
}
从我读到的内容来看,onActivityResult不适用于片段,但是我无法思考或找到它应该如何工作的任何主题。有人能帮我完成这项工作吗?还有,在我上传之后,我如何获取每个用户的个人资料图片?我正在使用内置的Firebase身份验证系统,包括电子邮件、Google和Facebook身份验证,我正在努力使它能够工作,而无需在数据库中额外存储用户。
提前谢谢

试试下面的代码片段:

步骤1:-在build.gradle(模块:app)文件中添加firebase存储依赖项。firebase存储的最新依赖项是:

 implementation 'com.google.firebase:firebase-storage:19.1.0'
步骤2:-设置activity_main.xml布局文件

步骤3:-设置MainActivity.java文件

FirebaseStorage  storage = FirebaseStorage.getInstance(); 
StorageReference  storageReference = storage.getReference();

        private void uploadImage() 
        { 
            if (filePath != null) { 

                // Code for showing progressDialog while uploading 
                ProgressDialog progressDialog = new ProgressDialog(this); 
                progressDialog.setTitle("Uploading..."); 
                progressDialog.show(); 

                // Defining the child of storageReference 
                StorageReferenceref=storageReference.child("images/"+UUID.randomUUID().toString(); 

                // adding listeners on upload 
                // or failure of image 
                ref.putFile(filePath) 
                    .addOnSuccessListener( 
                        new OnSuccessListener<UploadTask.TaskSnapshot>() { 

                            @Override
                            public void onSuccess( 
                                UploadTask.TaskSnapshot taskSnapshot) 
                            { 

                                // Image uploaded successfully 
                                // Dismiss dialog 
                                progressDialog.dismiss(); 
                                Toast 
                                    .makeText(MainActivity.this, 
                                              "Image Uploaded!!", 
                                              Toast.LENGTH_SHORT) 
                                    .show(); 
                            } 
                        }) 

                    .addOnFailureListener(new OnFailureListener() { 
                        @Override
                        public void onFailure(@NonNull Exception e) 
                        { 

                            // Error, Image not uploaded 
                            progressDialog.dismiss(); 
                            Toast 
                                .makeText(MainActivity.this, 
                                          "Failed " + e.getMessage(), 
                                          Toast.LENGTH_SHORT) 
                                .show(); 
                        } 
                    }) 
                    .addOnProgressListener( 
                        new OnProgressListener<UploadTask.TaskSnapshot>() { 

                            // Progress Listener for loading 
                            // percentage on the dialog box 
                            @Override
                            public void onProgress( 
                                UploadTask.TaskSnapshot taskSnapshot) 
                            { 
                                double progress 
                                    = (100.0
                                       * taskSnapshot.getBytesTransferred() 
                                       / taskSnapshot.getTotalByteCount()); 
                                progressDialog.setMessage( 
                                    "Uploaded "
                                    + (int)progress + "%"); 
                            } 
                        }); 
            } 
        } 
FirebaseStorage=FirebaseStorage.getInstance();
StorageReference-StorageReference=storage.getReference();
私有void uploadImage()
{ 
如果(filePath!=null){
//上载时显示progressDialog的代码
ProgressDialog ProgressDialog=新建ProgressDialog(此);
progressDialog.setTitle(“上载…”);
progressDialog.show();
//定义storageReference的子级
StorageReferenceref=storageReference.child(“images/”+UUID.randomUUID().toString();
//在上载时添加侦听器
//还是形象的失败
ref.putFile(文件路径)
.addOnSuccessListener(
新建OnSuccessListener(){
@凌驾
成功时的公开无效(
UploadTask.TaskSnapshot(任务快照)
{ 
//已成功上载图像
//取消对话框
progressDialog.disclose();
干杯
.makeText(MainActivity.this,
“图片上传!!”,
吐司,长度(短)
.show();
} 
}) 
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e)
{ 
//错误,未上载图像
progressDialog.disclose();
干杯
.makeText(MainActivity.this,
“失败”+e.getMessage(),
吐司,长度(短)
.show();
} 
}) 
.addOnProgressListener(
新建OnProgressListener(){
//用于加载的进度侦听器
//对话框上的百分比
@凌驾
公共工程进展(
上传任务