【问题标题】:How to open the Samsung native gallery without having an error toast?如何在不出现错误 toast 的情况下打开三星原生图库?
【发布时间】:2020-11-26 14:55:11
【问题描述】:

我想使用我的应用程序中的按钮打开手机的图库。我正在使用这样的东西:

goToGalleryButton.setOnClickListener {
  val intent = Intent()
  intent.action = Intent.ACTION_VIEW
  intent.type = "image/*"
  intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
  startActivity(intent)
}

按下按钮后,会弹出选择所需应用程序的窗口。如果我选择 Google 照片应用程序,一切都很好,我可以随意查看所有图像和视频,但如果我选择三星的图库,我会收到“不支持的文件”错误消息。

华为设备在选择原生图库应用时也会发生类似的情况。

有没有办法在打开原生图库应用时避免出现该错误消息?

【问题讨论】:

    标签: android android-intent android-gallery


    【解决方案1】:

    如果我选择三星的画廊,我会收到“不支持的文件”错误消息的祝酒词

    当然。你的Intent 坏了:

    • ACTION_VIEW 获取要查看的内容的 Uri - 您不包括该内容
    • ACTION_VIEW 采用该内容的具体 MIME 类型——您使用的是通配符

    您假设能够查看图像的应用程序开发人员在收到有缺陷的Intent 时会“优雅地降级”。显然,谷歌照片就是这种情况。一般情况下不会这样。

    我想使用应用程序中的按钮打开手机图库

    我将此解释为您希望执行与用户点击该应用程序的启动器图标相同的操作。如果是这样:

    • ACTION_MAINCATEGORY_LAUNCHER 创建一个Intent
    • a selector Intent 添加到那个,选择器将帮助限制选择器使用哪些应用

    CATEGORY_APP_GALLERY 可能是用于选择器Intent 的正确类别。

    你可以结合所有using makeMainSelectorActivity():

    val intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_GALLERY)
      .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    

    【讨论】:

    • 谢谢!这真的很有帮助。我找到了画廊的意图类别,但我没有足够小心地在 makeMainSelectorActivity 中使用它,并且我收到错误 No Activity found to handle Intent
    猜你喜欢
    • 2013-03-06
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2014-12-15
    • 1970-01-01
    • 2021-12-28
    • 2019-03-13
    相关资源
    最近更新 更多