首页 > 解决方案 > 为什么 addIntentsToList 方法会给出错误“无法解析方法”

问题描述

我正在尝试创建一个可以拍摄照片或从图库中获取照片然后在 ListView 上显示的程序,我在视频的帮助下做了所有事情,但是 addIntentsToList 方法给出了错误“无法解析该方法” </p>

       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);
        }
    }
}

标签: javaandroidandroid-cameraandroid-camera-intent

解决方案


您遇到此错误是因为该方法未实现。

当您使用@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;
    }

推荐阅读