Java 如何使用3个不同的文件选择器获取文件的URI?

Java 如何使用3个不同的文件选择器获取文件的URI?,java,android,firebase,Java,Android,Firebase,我有3个不同的按钮:上传个人资料图片、上传照片ID和上传犯罪记录照片,但在调用我创建的openFileChooser()方法后,我不知道如何准确地处理这些按钮才能获得3个不同的URL 我是说我这么做了 public class SignupCarrier extends AppCompatActivity { EditText editfullname, editemail, editpassword, editconfirmpassword, editaddress, editcity

我有3个不同的按钮:上传个人资料图片、上传照片ID和上传犯罪记录照片,但在调用我创建的openFileChooser()方法后,我不知道如何准确地处理这些按钮才能获得3个不同的URL

我是说我这么做了

public class SignupCarrier extends AppCompatActivity {
    EditText editfullname, editemail, editpassword, editconfirmpassword, editaddress, editcity, editstate, editzipcode, editcountry, editphone, editcardnumber, editexpiredate, editcvc;
Button upProfile, upIDPhoto, upCriminalRecord;
private Uri mProfilePic, mIdPhoto,mCriminalRecord;
FirebaseAuth mFirebaseAuth;
private StorageReference mStorageRef;
private StorageTask mUploadTask;
    private static final int PICK_IMAGE_REQUEST = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup_carrier);


        mFirebaseAuth = FirebaseAuth.getInstance();
        upProfile = (Button) findViewById(R.id.profilePic);
        upIDPhoto = (Button) findViewById(R.id.idphotoPic);
        upCriminalRecord = (Button) findViewById(R.id.criminalRecord);

        mStorageRef = FirebaseStorage.getInstance().getReference("carriersPictures");

        upProfile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }
        });
        upIDPhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }
        });
        upCriminalRecord.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }
        });

    }

    private void openFileChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, PICK_IMAGE_REQUEST);
    }

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

        if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null)
        {
            mProfilePic = data.getData();


        }
    }
}


但这可能只适用于upProfile按钮,如何修改onActivityResult以获得每个按钮的URL


谢谢大家!!我是Android新手。

Uri
作为参数添加到
openFileChooser()
方法中

private void openFileChooser(Uri)

这样称呼它:

upProfile.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openFileChooser(mProfilePic);
        }
    });
将您的
openFileChooser()
方法更新为:

private void openFileChooser(Uri uri) {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    if (uri == mProfilePic) {
        startActivityForResult(intent, PICK_IMAGE_REQUEST);
    } else if (uri == mIdPhoto) {
        startActivityForResult(intent, PICK_IMAGE_REQUEST_ID);
    } else if (uri == mCriminalRecord) {
        startActivityForResult(intent, PICK_IMAGE_REQUEST_CR);
    }
}
您需要声明这些常量:
PICK\u IMAGE\u REQUEST\u ID
PICK\u IMAGE\u REQUEST\u CR


在您的
onActivityResult()
方法中,检查
requestCode
以处理每种情况

Uri
作为参数添加到您的
openFileChooser()
方法中

private void openFileChooser(Uri)

这样称呼它:

upProfile.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openFileChooser(mProfilePic);
        }
    });
将您的
openFileChooser()
方法更新为:

private void openFileChooser(Uri uri) {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    if (uri == mProfilePic) {
        startActivityForResult(intent, PICK_IMAGE_REQUEST);
    } else if (uri == mIdPhoto) {
        startActivityForResult(intent, PICK_IMAGE_REQUEST_ID);
    } else if (uri == mCriminalRecord) {
        startActivityForResult(intent, PICK_IMAGE_REQUEST_CR);
    }
}
您需要声明这些常量:
PICK\u IMAGE\u REQUEST\u ID
PICK\u IMAGE\u REQUEST\u CR


在您的
onActivityResult()
方法中,检查
requestCode
以处理每个案例

谢谢,然后我如何返回它?我的意思是在onActivityResult中,什么可以获取数据。getData();?你想退货什么?我不明白你想做什么。我有三个按钮。上传个人资料图片,上传身份证照片,上传犯罪记录。在他们单击按钮并选择图像后,我想获取该图像的Url。在fileChooser之后,我调用onAcivityResult,但在那里我获取了Url,但这些按钮中的哪一个?我应该在哪里使用我传递给参数的值谢谢,然后如何返回它?我的意思是在onActivityResult中,什么可以获取数据。getData();?你想退货什么?我不明白你想做什么。我有三个按钮。上传个人资料图片,上传身份证照片,上传犯罪记录。在他们单击按钮并选择图像后,我想获取该图像的Url。在fileChooser之后,我调用onAcivityResult,但在那里我获取了Url,但这些按钮中的哪一个?我应该在哪里使用我随参数传递的值