Android 4.3 裁剪图库 resultCode 取消

2023-11-29

我的 Galaxy Nexus 现在在 Android 4.3 上运行,允许我使用这个新版本测试我的应用程序。除了裁剪之外,一切似乎都很好。

我有一个应用程序,它使用相机拍照,然后通过图库应用程序裁剪图像。

我还可以从图库中选择一张图片并进行裁剪。 从 Android 4.3 开始,图库应用程序发生了变化。

如果我用相机 API 拍照,然后要求画廊将其裁剪到我的onActivityResult方法将resultCode设置为0(意思是取消)而我从裁剪视图中单击“保存”。

但是,如果我从图库中选择一张图片并将其裁剪,则一切正常,resultCode 参数将设置为 -1。 在这两种情况下我都调用相同的方法来裁剪图片。

我的手机上有 Quickpic(图库应用程序的替代品),有了它一切正常!

private void performCrop(Uri picUri) {
    try {
        int aspectX = 750;
        int aspectY = 1011;

        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(picUri, "image/*");
        intent.putExtra("crop", "true");
        intent.putExtra("scale", "true");
        intent.putExtra("aspectX", aspectX);
        intent.putExtra("aspectY", aspectY);
        intent.putExtra("scaleUpIfNeeded", true);

        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCurrentPhotoPath)));

        startActivityForResult(intent, CROP);
    }
    catch (ActivityNotFoundException anfe) {
        String errorMessage = "Your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

在 Android 4.2.2 上一切正常。 感谢您的帮助 !


您是否考虑过使用这样的库:

https://github.com/biokys/cropimage

我发现 com.android.camera.action.CROP 有时会因手机而异,并且并不总是可用,因此如果您想释放它,它可能会给您带来一些问题。

UPDATE:

我已经用 Android 4.3 测试了上述库,它工作没有问题。您只需将库添加到您的项目中即可。

然后您可以以非常相似的方式编写您的方法:

private void performCrop(Uri picUri) {
//you have to convert picUri to string and remove the "file://" to work as a path for this library
String path = picUri.toString().replaceAll("file://", "");

try {
    int aspectX = 750;
    int aspectY = 1011;

    Intent intent = new Intent(this, CropImage.class);
    //send the path to CropImage intent to get the photo you have just taken or selected from gallery
    intent.putExtra(CropImage.IMAGE_PATH, path);

    intent.putExtra(CropImage.SCALE, true);

    intent.putExtra("aspectX", aspectX);
    intent.putExtra("aspectY", aspectY);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCurrentPhotoPath)));

    startActivityForResult(intent, CROP);
}
catch (ActivityNotFoundException anfe) {
    String errorMessage = "Your device doesn't support the crop action!";
    Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
    toast.show();
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 4.3 裁剪图库 resultCode 取消 的相关文章

随机推荐

  • 创建二维列表矩阵

    如何创建基于列表的矩阵1具有给定的行数和列数 例如 像 row 3 column 4 gt 1 1 1 1 1 1 1 1 1 1 1 1 这是使用列表理解的替代方法 让我们看一下基础知识 Prelude gt 2 x x lt 1 4 2
  • Asp.net MVC Razor如何显示两个模型字段的分组单选按钮

    我有一个简单的测验模型 我试图让用户从强类型视图中分组的两个单选按钮中选择正确答案 替代答案 但我使用的 lambda 表达式不起作用 我得到两个空白的单选按钮 我在这里和网上查看了几个问题 但我的模型是 IList 并且我找不到合适的示例
  • 如何根据下拉框 #1 的输入更改下拉框 #2?

    我有两个下拉菜单
  • 在 Eclipse 中运行 gtkmm 项目时出现“Gtk-WARNING **:无法打开显示:”

    我正在尝试在 Eclipse CDT 在 Ubuntu 上 中运行 gtkmm 项目 该项目编译正常 没有报告错误 但是当我尝试运行该项目时 控制台打印出此消息 Gtk WARNING cannot open display 如果我转到可执
  • Leaflet - 将控件放在 div 地图之外

    我制作了以下应用程序 http lae2 alwaysdata net carte exppng 我想将我的两个控件 leaflet control zoom 和 leaflet control layers 放在 div 地图之外 例如
  • 如何通过 C# 获取 Azure Log Analytics 工作区的工作区 ID

    如何通过 C 获取 Azure 中 Log Analytics 工作区的工作区 ID 从那以后我发现OperationalInsightsManagementClient也可以使用类 var client new OperationalIn
  • 如何在 mule 4 中将 ManagedCursorStreamProvider 转换为 JSOn 对象

    如何在 mule 中将 ManagedCursorStreamProvider 转换为 Json 对象 我写了一个java方法 它将Json对象作为输入 Request Payload a one b two 调用静态 arg0 paylo
  • Transformers PreTrainedTokenizer add_tokens 功能

    参考文档在 Huggingface 的很棒的变形金刚库中 我发现了add tokens功能 tokenizer BertTokenizer from pretrained bert base uncased model BertModel
  • 如何在QTableWidget中显示点击QPushButton的行

    我想删除行QPushButton被点击怎么可能我认为使用插槽是合理的 但如何做到这一点不知道 如果您有任何想法如何获取一行选定的按钮请分享 谢谢 这是我的桌子 这是我向 QTableWidget 添加行的代码 MainWindow Main
  • 使用本地图像在Windows Phone 8.1的webview中显示

    我在 Windows Phone 8 1 中创建了混合应用程序 我的一个页面使用了 webview 控件 它上面有一个 img 元素 我有一个小图像作为我的应用程序构建的一部分 复制到输出目录 设置为 始终复制 我已按照此页面的说明进行操作
  • 什么是软件框架? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 有人可以解释一下什么是软件框架吗 为什么我们需要一个框架 框架如何使编程变得更容易 我很
  • php 中 at-sign 的有效用例

    at 符号用于隐藏错误消息 据我所知 绝对没有使用它的用例或借口 您可以通过更改 php ini 设置来隐藏生产中的错误 同时仍将错误输出到日志文件 符号使其他程序员很难确定问题出在哪里 当您开发时 错误消息是您的朋友 快速发现错误并修复它
  • 需要列出 SQL Server 数据库中的所有触发器以及表名称和表架构

    我需要列出 SQL Server 数据库中的所有触发器以及表名称和表架构 我就快到了 SELECT trigger name name trigger owner USER NAME uid table schema table name
  • 有什么办法可以拯救脏画布吗?

    我正在使用 HTML5 画布制作视频屏幕截图 视频托管在其他地方 除了 toDataURL 之外一切正常 因为画布很脏 所以 我想知道 有什么办法可以将这个画布图像保存在计算机上吗 我认为答案是否定的 但希望有一些黑客来完成这件事 除了将视
  • Hangfire 激活器未处理

    我遇到了 Hangfire 无法在 NET 5 上的 WebApi 中处理它实例的对象的问题 这是我在 ConfigureServices 中的配置 非常标准 顺便说一句 services AddScoped
  • Slim 框架/公共文件夹重定向

    我正在使用 Slim Framework v3 我已经设置了 API 如果我访问它可以顺利工作http localhost 8080 slimapp public 我有默认的目录结构 我的示例 API 端点是http localhost 8
  • 为什么“Range(...).End(xlDown).Row”返回 1048576?

    我想在 VBA 的 for 循环中复制一些值 因此我通过以下方式计算限制 For iCounter 1 To Range End xlDown Row Range Row 1 Sadly Range End xlDown Row回报1048
  • ReadFile() 说失败,但错误代码是 ERROR_SUCCESS

    我在用着ReadFile 在 Windows 上从串行端口读取数据 这段代码在某个时间点工作得很好 但现在失败了 我正在尝试找出问题的根源 所以我怀疑这是串行配置或超时的问题 因为这些都没有改变 ReadFile 返回 false 表明发生
  • 无法删除 JSESSIONID cookie

    我正在使用带有 HttpServletRequest 和响应的 Spring 控制器来删除 cookie 当我需要删除 cookie 时 我有以下代码 Cookie allCookies request getCookies for int
  • Android 4.3 裁剪图库 resultCode 取消

    我的 Galaxy Nexus 现在在 Android 4 3 上运行 允许我使用这个新版本测试我的应用程序 除了裁剪之外 一切似乎都很好 我有一个应用程序 它使用相机拍照 然后通过图库应用程序裁剪图像 我还可以从图库中选择一张图片并进行裁