簡體   English   中英

如何使用 3 個不同的文件選擇器獲取文件的 URI?

[英]How can I get the URI to the file with 3 different file choosers?

我有 3 個不同的按鈕:上傳個人資料圖片、上傳照片 ID 和上傳犯罪記錄照片,但是在調用我創建的 openFileChooser() 方法后,我不知道我必須如何處理才能獲得 3 個不同的 URls。

我的意思是我做了這個

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?

謝謝你。 我是安卓新手。

Uri作為參數添加到您的openFileChooser()方法。

private void openFileChooser(Uri 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_IMAGE_REQUEST_IDPICK_IMAGE_REQUEST_CR

並在您的onActivityResult()方法中檢查requestCode以處理每種情況

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM