如何解决 android studio 中 startActivityForResult() 已弃用的问题

问题描述 投票:0回答:0

我正在尝试从图库中选择图片,但在选择后不显示更改后的图片。我认为它没有选择 reuest 代码并且 startActivityForResult() 已被弃用。

以下是java代码:

package com.example.chatzone;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class ProfileImage extends AppCompatActivity {

    private CardView mgetImage;
    private ImageView mUserImage;
    private TextView Skip;
    private static int PICK_IMAGE=123;
    private Uri imagePath;
    private Button mUploadImage;
    private FirebaseAuth mAuth;
    private FirebaseStorage fbStorage;
    private StorageReference fbStorageRef;
    private String ImageUriAccessToken;
    private FirebaseFirestore fbStore;
    ProgressBar PB;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile_image);
        mAuth = FirebaseAuth.getInstance();
        fbStorage = FirebaseStorage.getInstance();
        fbStorageRef = fbStorage.getReference();
        fbStore = FirebaseFirestore.getInstance();
        mgetImage = findViewById(R.id.UpladImageCardview);
        mUserImage = findViewById(R.id.UpladImage);
        mUploadImage = findViewById(R.id.Upload);
        Skip = findViewById(R.id.skip);

        mgetImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                startActivityForResult(i,PICK_IMAGE);
            }
        });

        mUploadImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {    
                if(imagePath==null)
                {
                    Toast.makeText(ProfileImage.this, "Select Image", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    PB.setVisibility(View.VISIBLE);
                    sendImage();
                    PB.setVisibility(View.GONE);
                    Intent i = new Intent(ProfileImage.this,MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        });

        Skip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i= new Intent(ProfileImage.this,MainActivity.class);
                startActivity(i);
            }
        });
    }

    private void sendImage() {
        sendImagetoStorage();
    }

    private void sendImagetoStorage() {
        StorageReference imgref = fbStorageRef.child("Images").child(mAuth.getUid()).child("Profile Pic");

        //Image compression

        Bitmap bitmap = null;
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),imagePath);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,25,byteArrayOutputStream);
        byte[] data = byteArrayOutputStream.toByteArray();

        UploadTask uploadTask = imgref.putBytes(data);

        uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                imgref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        ImageUriAccessToken=uri.toString();
                        Toast.makeText(ProfileImage.this, "get Uri Success", Toast.LENGTH_SHORT).show();
                        sendDataToFireStore();
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(ProfileImage.this, "Failed to get Uri", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(ProfileImage.this, "Image Upload Failure", Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void sendDataToFireStore() {
        DocumentReference documentReference = fbStore.collection("Users").document(mAuth.getUid());
        UserProfile User = new UserProfile();
        Map<String , Object> userdata = new HashMap<>();
        userdata.put("id",User.getId());
        userdata.put("Email",User.getEmail());
        userdata.put("User Name",User.getUsername());
        userdata.put("First Name",User.getFirst_Name());
        userdata.put("Last Name",User.getLast_Name());
        userdata.put("Birth Date",User.getBirth_Date());
        userdata.put("Phone Number",User.getPhone_Number());
        userdata.put("image url",User.getURL());
        userdata.put("status",User.getStatus());
        userdata.put("search",User.getSearch());

        documentReference.set(userdata).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void unused) {
                Toast.makeText(ProfileImage.this, "Data Stored on the Firestore ", Toast.LENGTH_SHORT).show();
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

        if(requestCode==PICK_IMAGE && requestCode==RESULT_OK)
        {
            imagePath = data.getData();
            mUserImage.setImageURI(imagePath);
        }
        else {
            Toast.makeText(this, "Unsuccessfull", Toast.LENGTH_SHORT).show();
        }
        super.onActivityResult(requestCode, resultCode, data);
    }



}

所以请告诉我如何解决这个问题并从图库中选择图像。我正在使用毕加索图书馆 “实施‘com.squareup.picasso:picasso:2.71828’”

java android picasso deprecated startactivityforresult
© www.soinside.com 2019 - 2024. All rights reserved.