Почему метод addIntentsToList выдает ошибку «Не удается разрешить метод» - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь создать программу, которая может сделать фотографию или взять ее из галереи, а затем показать ее в ListView, я сделал все с помощью видео, но метод addIntentsToList выдает ошибку «Не удается разрешить метод »

       try {

            mTempPhoto = createTempImageFile(getExternalCacheDir());
            mImageUri = mTempPhoto.getAbsolutePath();


            List<Intent> intentList = new ArrayList<>();
            Intent chooserIntent = null;


            Intent pickIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            takePhotoIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempPhoto));

            intentList = addIntentsToList(this, intentList, pickIntent);
            intentList = addIntentsToList(this, intentList, takePhotoIntent); 

            if (!intentList.isEmpty()) {
                chooserIntent = Intent.createChooser(intentList.remove(intentList.size() - 1),"Choose your image source");
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentList.toArray(new Parcelable[]{}));
            }

            startActivityForResult(chooserIntent, REQUEST_CODE_TAKE_PHOTO);
        } catch (IOException e) {
            Log.e("ERROR", e.getMessage(), e);
        }
    }
}

1 Ответ

0 голосов
/ 05 июня 2019

Вы получаете эту ошибку, потому что метод не был реализован.

Поскольку вы используете код @Mariovc, вы должны использовать весь класс https://gist.github.com/Mariovc/f06e70ebe8ca52fbbbe2

private static List<Intent> addIntentsToList(Context context, List<Intent> list, Intent intent) {
        List<ResolveInfo> resInfo = context.getPackageManager().queryIntentActivities(intent, 0);
        for (ResolveInfo resolveInfo : resInfo) {
            String packageName = resolveInfo.activityInfo.packageName;
            Intent targetedIntent = new Intent(intent);
            targetedIntent.setPackage(packageName);
            list.add(targetedIntent);
            Log.d(TAG, "Intent: " + intent.getAction() + " package: " + packageName);
        }
        return list;
    }
...