具有多个权限的java ActivityResultLauncher
我最近开始开发安卓,我有一个问题。由于startActivityForResult已被删除,我尝试使用ActivityResultLauncher,但我不明白如何在那里传递请求代码。 下面你可以看到我的意思,在startActivityForResult()的前面,我传递了意图和请求代码,但我不明白如何在activityResultLauncher中正确执行这一点。 也许有人能帮我? 提前谢谢
private void pickStorage()
{
Intent gallery = new Intent(Intent.ACTION_PICK);
gallery.setType("image/*");
gallery.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
gallery.setAction(Intent.ACTION_GET_CONTENT);
activityResultLauncher.launch(Intent.createChooser(gallery, "Select Picture"), PICK_IMAGE_MULTIPLE);
//startActivityForResult(Intent.createChooser(gallery, "Select Picture"), PICK_IMAGE_MULTIPLE);
}
private void pickStorageForMap()
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
activityResultLauncher.launch(intent);
//startActivityForResult(intent, PICK_MAP_GPX);
}
ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>()
{
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode() == PICK_IMAGE_MULTIPLE && result.getResultCode() == RESULT_OK)
{
if(result.getData() != null)
{
int imageCount = result.getData().getClipData().getItemCount();
for (int i = 0; i < imageCount; i++) {
Uri image = result.getData().getClipData().getItemAt(i).getUri();
mArrayListImages.add(image);
}
numberOfImages = mArrayListImages.size();
for (int i = 0; i < mArrayListImages.size(); i++) {
Slider slider = new Slider(mArrayListImages.get(i));
Slider model = new Slider();
model.setUrl(slider.getUrl());
mSliderArrayList.add(model);
mSliderAdapter = new SliderAdapter(mContext, mSliderArrayList);
mSliderView.setSliderAdapter(mSliderAdapter);
mSliderView.setSliderTransformAnimation(SliderAnimations.SIMPLETRANSFORMATION);
}
}
}else if(result.getResultCode() == PICK_MAP_GPX && result.getResultCode() == RESULT_OK)
{
if(result.getData() != null) {
String fileExtension = "", extension = "gpx";
long bytes, kb, mb, gb;
String size, name;
Uri uri = result.getData().getData();
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
cursor.moveToFirst();
name = cursor.getString(nameIndex);
bytes = Math.round(cursor.getDouble(sizeIndex));
kb = bytes/1024;
mb = kb/1024;
gb = mb/1024;
if(gb > 0)
size = gb + " GB";
else if(mb > 0)
size = mb + " MB";
else
size = kb + " KB";
//String size = Long.toString(cursor.getLong(sizeIndex));
int index = name.lastIndexOf('.');
if(index > 0)
fileExtension = name.substring(index+1);
Toast.makeText(mContext, "Extension: " + extension, Toast.LENGTH_SHORT).show();
if(extension.equalsIgnoreCase(fileExtension)) {
mapUri = result.getData().getData();
Toast.makeText(mContext, "Type " + extension, Toast.LENGTH_SHORT).show();
showFile(name, size);
}else
Toast.makeText(mContext, "Choose gpx file", Toast.LENGTH_SHORT).show();
}else
{
Toast.makeText(mContext, "There is no file", Toast.LENGTH_LONG).show();
}
}
}
});
共 (0) 个答案