Android ACTION_EDIT意图编辑图像

时间:2017-04-08 22:43:44

标签: android android-intent

我开发的应用程序允许用户拍照,在上面绘图,然后将其上传到我们的社交媒体应用程序中。我想使用第三方应用程序来减少我们的工作量。我在这里找到了许多关于如何做到这一点的答案,下面的大部分代码都来自这些答案。当我尝试不同的答案组合时,我总是在意图上得到Toast错误。我得到的两个错误是"文件无法打开"和"图片无法编辑"。前者听起来像文件权限问题,我认为应该从下面的grantUriPermissions解决方案中解决。另一个我不知道的错误。

// Code taken from answer on http://stackoverflow.com/questions/15699299/android-edit-image-intent
final Uri uri = Uri.parse(this.photoPath);
int flags = Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION;

Intent editIntent = new Intent(Intent.ACTION_EDIT);
editIntent.setDataAndType(uri, "image/*");
editIntent.addFlags(flags);
editIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

// This work-around allows the intent to access our private FileProvider storage.
// Code taken from http://stackoverflow.com/questions/24835364/android-open-private-file-with-third-party-app
List<ResolveInfo> resInfoList = this.getPackageManager().queryIntentActivities(editIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
    String packageName = resolveInfo.activityInfo.packageName;
    this.grantUriPermission(packageName, uri, flags);
}

startActivityForResult(Intent.createChooser(editIntent, null), EDIT_INTENT);

之前有人看过这些Toast消息并能够解决它们吗?

1 个答案:

答案 0 :(得分:0)

我弄明白了这个问题。我对Uri.parse的使用是错误的,因为我在我的应用程序中使用了FileProvider。为FileProvider.getUriForFile交换该行使应用程序按预期工作。