有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

具有多个权限的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) 个答案