java - 为什么 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);
}
}
}
解决方案
您遇到此错误是因为该方法未实现。
当您使用@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;
}
推荐阅读
- linux - 如何使用 libpqxx 以编程方式清除 PostgreSQL 数据库
- oracle - 如何建立参照完整性约束?
- java - 如何更新没有任何数据的行以唯一标识该行?
- c# - C# Linq 表达式 - 如何获取表达式的实例
- tomcat - Tomcat中每个不同应用程序的单独jvm选项
- css - 侧边栏打开时如何将主要内容保留在侧边栏下方?
- ionic3 - 如何在 ionic 中使用 listDir() 方法在屏幕上显示目录文件
- php - 如何使用 SQL 数据库在 php 中调用多查询
- ios - 关于在 Swift 中按下按钮时更改 UIView 高度的问题
- swift - Swift 包和`#if canImport(...)`。它是如何工作的?