如何通过 Intent 在 Android 中打开文件

2024-01-02

如何打开以前存储在“私有”文件系统中的文件?该文件正在由网络服务下载,并应存储在本地文件系统上。 尝试通过意图(Action_View)打开文件时出现“奇怪”错误。尽管该文件存在于文件系统中(在模拟器/Eclipse 的文件资源管理器中看到该文件),但它不会显示在启动的调用画廊活动中。画廊显示的不是图片,而是黑屏,其中没有内容(操作栏除外)。当尝试通过此方法打开 pdf/电影/mp3 文件时,也会发生同样的情况(例如 pdf 表示文件已损坏)。

顺便说一句:存储在本地文件系统上的数据是有效的(未损坏),我从调试器下载了文件(通过拉取方法),并且可以在我的工作站上打开文件......

public void onAttachment(Context context, Attachment attachment) {
    try {
        //Attachment is a structured data object that contains of a byte[], filename and mimetype (like image/jpeg)
        FileOutputStream fos = FileOutputStream fos = context.openFileOutput(attachment.getAttachmentFileName(), Context.MODE_PRIVATE);
        fos.write(attachment.getBinary());
        fos.flush();
        fos.close();
        File f = context.getFileStreamPath(attachment.getAttachmentFileName());
        Uri uri = Uri.fromFile(f);          
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri,attachment.getAttachmentMimetype());
        context.startActivity(intent);                  
    } catch (IOException e) {
        e.printStackTrace();
    }
}           

您的代码中附件的类型是什么?也许它返回错误的 mime 类型?

这段代码对我有用:

File file = new File("EXAMPLE.JPG");

// Just example, you should parse file name for extension
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".JPG");

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), mime);
startActivityForResult(intent, 10);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 Intent 在 Android 中打开文件 的相关文章

  • Android:如何测试自定义视图?

    Android 中有多种单元测试方法 测试我编写的自定义视图的最佳方法是什么 我目前正在将其作为仪器测试用例活动的一部分进行测试 但我宁愿只测试孤立的视图 对于缺乏以视图为中心的测试用例实现的一个简单解决方案是在包含视图的测试项目中创建一个
  • 进入沉浸式全屏模式时状态栏为白色

    我根据以下内容做了一个关于沉浸式全屏模式的简单项目使用沉浸式全屏模式 https developer android com training system ui immersive html But first of all it per
  • Android 中的计时器任务在无限期时间后停止运行

    我是安卓新手 我正在开发一个应用程序 其中一段特定的代码在后台每 5 秒后执行一次 为了实现这一目标 我使用带有定时器的服务 其中包含定时器任务 有时它工作正常 但经过一段时间后 我的服务正在运行 但计时器任务在 android 中自动停止
  • 运行带有 QVGA 的 Android 1.6 的模拟器上的缩放控件

    我正在模拟器中的不同 AVD 设置上测试我的应用程序 并在仅使用 QVGA 分辨率 lcd 密度 120 的 Android 1 6 上的 MapView 中遇到缩放控件问题 当点击屏幕以显示缩放控件时 放大 加号显示得比缩小大得多 这似乎
  • ViewPager - 无限滚动? [复制]

    这个问题在这里已经有答案了 我需要在屏幕上显示文本或图像 文本或图像 一个请求总共 10 个 是通过 HttpClient 从我的服务器获取的 当用户向右滑动并到达第 8 张幻灯片时 我需要从服务器获取下一组 10 个文本或图像 使用 Vi
  • Android ViewPager + 带有动态 ListView 的 Fragments

    在我的应用程序中 我有带有选项卡的活动 假设有 10 个选项卡 每个标签页包含Fragment with ListView 此 ListView 中显示的数据是从我的服务器动态加载的 我用ViewPager显示这些页面 我不想保留所有Fra
  • 无法解析符号“AuthUI”

    我正在添加 firebase google 和 Gmail 登录 但是当我粘贴代码时 onAuthStateChanged NonNull FirebaseAuth firebaseAuth 方法我收到此错误 无法解析符号 AuthUI 在
  • 尽管使用了 NTP 偏移量,设备仍会在几秒后启动指令

    背景 我有两台物理设备 一台 Galaxy S3 手机 和一台 Asus 700T 平板电脑 我想在同一时间执行同一组指令 因此 我使用的是 Android 的平台框架 基本 SNTP 客户端代码 https github com andr
  • 将 match_parent 转换为“0dp”

    当我使用android layout height match parent or android layout width match parent 作为约束布局中子项的高度 宽度并构建 Gradle 文件 它会自动更改为android
  • Android 4.4 (kitkat) 版本中的短信阻止和允许问题

    我们在 Google Play 上推出了短信拦截应用程序 如果满足任何阻止条件 它就会阻止短信 否则我们允许短信发送到本机收件箱 它在除 android 4 4 Kitkat 之外的所有版本上都运行良好 我们尝试实现适用于 4 4 的新短信
  • 从图库加载图像时应用程序崩溃

    在我的应用程序中 我有两个按钮 一个用于从图库 从设备 加载图像 另一个用于通过访问设备的相机拍照 我的代码在某些设备上正常工作 bt在某些设备上 应用程序单击图库中的图像时崩溃 任何人都可以帮助我找出实际问题吗 public class
  • 自定义 listView 按随机顺序显示较少的项目

    我为我的 Android 应用程序制作了一个自定义的膨胀 listView 但 getView 方法有问题 public class BinderData extends BaseAdapter private LayoutInflater
  • HttpURLConnection.getResponseCode() 冻结执行/不会超时

    我正在编写一个 Android 应用程序 它连接到受密码保护的 cPanel 服务器 Apache 2 2 22 页面 当身份验证凭据正确时 我的连接没有问题 但是 当凭据不正确时 我的 Android 应用程序似乎会冻结在HttpURLC
  • 为什么 CheckBox 检查不能以编程方式与 Kotlin 一起使用?

    我想这个问题以前可能有人问过 但这个问题也发生在我身上 所以我在这里再次询问 看看我们能否找到解决方案 所以基本上问题是以编程方式检查复选框不与 Kotlin 代码一起工作 为了解释一下 我正在分享我的代码和问题的屏幕截图 filterCo
  • 使用 ArrayAdapter 过滤 ListView 而不重写 getFilter 方法

    在这个 Stackoverflow 中answer https stackoverflow com questions 2718202 custom filtering in android using arrayadapter answe
  • Android:直接从浏览器下载文件

    我试图让 Android 浏览器下载特定类型 xxx 的文件 这样我就可以设置一个应用程序与其关联 我已经成功完成了关联部分 因为我已经做到了 以便在资源管理器应用程序中单击正确类型的文件会加载适当的应用程序 我希望这会转移到浏览器 这样如
  • Android SearchView 自定义

    我是 Android 新手 我被困在一些我认为很简单但我很困惑的事情上 我需要不在操作栏 工具栏中而是在我的相对布局中创建自定义 searchView 问题是我不知道如何自定义背景 文本输入颜色 XML 中的搜索图标颜色 或者只是它们的属性
  • 具有 jsonObject 的 android 列表视图

    我正在开展一项活动 该活动请求服务器上的一个 php 文件 此 php 文件将返回给我一个JSONArray having JSONObjects作为它的元素 我明白了jArray并提取其内容 例如所有jsonObjects 每个 json
  • 如何获取任何已安装 Android 应用程序的清单权限

    是否可以获得任何已安装的 Android 应用程序的清单权限 感谢您的提示 让它运行 final Intent mainIntent new Intent Intent ACTION MAIN null mainIntent addCate
  • 重叠堆叠图像视图

    我正在尝试将图像视图堆叠在一起 70 重叠 我使用了一个frameLayout 并给每个elemnet填充了10 它有效 但是当涉及到处理事件时 这个填充让我很痛苦 有没有更好的重叠视图的方法 使用不同的布局 等 我正在为 Android

随机推荐

  • 1个div动态高度 1个div剩余高度和滚动

    我的父级中有 2 个 div div class parent div class foo1 div div class foo2 div div foo1将具有动态高度 因此我无法使用以下样式 height calc 100 foo1He
  • 将 onPress 函数绑定到 视图

    我想将 onPress 事件绑定到文本视图的一部分 而不使用 TouchableOpacity 或 TouchableHighlight 因为它们会用新行中断文本 有没有办法将其直接绑定到 React native 中的 Text 元素 i
  • Java Spring 服务是单例的吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我读过一些关于网络和堆栈的讨论 这些讨论声称单例是邪恶的 喜欢 单身人士的根本原因 https stackoverflow com questi
  • 从 [regex] 类型加速器表达式捕获命名组的 PowerShell 语法是什么?

    该问题使用以下示例字符串 r 20160112 11 26 39 UPDATE CMIS NC ABC LA012345J NAM MOUSE MICKEY J SEX M RAC W DOB 19670601 PCA A1 ARI CRI
  • 将滚动条添加到 JList

    我正在尝试向 JList 添加滚动条 它使用自定义数据模型 实际上添加一个 JScrollPanehidesJList 而不是添加滚动条 当我使用滚动条运行代码时 JList 不可见 并且我看不到数据 playlistField new J
  • 2 Div 垂直滚动同步

    我正在尝试同步 2 个 div 的垂直滚动 一个是TinyMCE编辑器的body 另一个是动态创建的预览div The preview looks like this 对于预览 div 我设法使用以下方法获取滚动的百分比 setup fun
  • 如何在汇编中访问 C 预处理器常量?

    如果我在我的中定义一个常量C h 文件 define constant 1 如何在程序集 s 文件中访问它 如果您使用 GNU 工具链 gcc 默认情况下将在具有以下内容的文件上运行预处理器 S扩展名 大写 S 因此您可以在程序集文件中使用
  • 如何查看 Python 应用程序发送的整个 HTTP 请求?

    就我而言 我正在使用requests通过 HTTPS 调用 PayPal API 的库 不幸的是 我收到来自 PayPal 的错误 而 PayPal 支持人员无法找出错误是什么或导致错误的原因 他们希望我 请提供整个请求 包括标头 我怎样才
  • Spring 在负载下会将对象刷新到磁盘吗?

    SonarQube 在我们的代码库中创建了一个问题 squid S1948 可序列化类中的字段本身必须是可序列化的或瞬态的 即使该类从未显式序列化或反序列化 这是因为在负载下 大多数 J2EE 应用程序框架都会将对象刷新到磁盘 而具有非瞬态
  • 有效存储棋局

    我已经阅读了大量与此问题相关的网络点击 但仍然没有找到任何明确的答案 我想做的是建立一个国际象棋棋局数据库 能够识别换位 通常是哪些棋子在哪些方格上 编辑 它还应该能够识别相似 但不完全相同 的位置 这是大约 20 年前的讨论 当时空间wa
  • 如何使用 AdaBoost 增强基于 Keras 的神经网络?

    假设我为二元分类问题拟合以下神经网络 model Sequential model add Dense 21 input dim 19 init uniform activation relu model add Dense 80 init
  • 语义 UI 动态下拉菜单

    语义用户界面下拉菜单出现问题 我一直在使用 Semantic Ui 并且想要动态更改下拉项 也就是说 当我从第一个下拉列表中选择值时 第二个下拉列表的项目将会更改 但问题是 当项目改变时 第二个下拉菜单无法选择 该值不会改变 下拉菜单不会折
  • PHP 是否有与 Rails 迁移相当的功能? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 PHP 是否有与 Rails 迁移相当的功能 寻找一个好的解决方案来在本地配置架构更改 然后自动将它们传送到服务器而不丢失数据 我的项目h
  • 查看 YouTube 视频的所有评论

    我正在尝试使用 Java 程序获取 YouTube 视频的所有评论 我无法得到它们 因为它有 显示更多 而不是所有评论 我正在寻找一种方法来获取我可以浏览的所有评论或评论页面 我有一个视频 ID 之类的东西 只需要评论 我已尝试在 URL
  • Chrome.tabs.executeScript - 选项卡未定义

    我正在尝试编写一个 chrome 扩展 其中有一个名为 btn3 的按钮 当我单击 Chrome 扩展程序 popup html 中的该按钮时 它将单击网页上的按钮 网页上的按钮具有以下 id regular secondary butto
  • ViewPager 具有同一类的多个片段实例

    我正在尝试创建一个包含 5 个片段的 ViewPager 5个片段 容器 因此每个片段包含2个片段 前 4 个片段具有相同的布局并且属于同一类 第五个是其他班的 那个班没有问题 问题是 当活动启动时 似乎只有 1 个片段在工作 viewPa
  • 为什么更改 .gwt.xml 文件中的“模块 -> 重命名为”属性会出现错误

    我可以通过自己创建所有文件来创建并运行一个简单的 GWT 应用程序 它工作正常 我能够看到正确的显示 我尝试玩弄代码来增强我的知识 我注意到的是 一旦我运行我的应用程序说模块重命名为 value 测试历史 效果很好 但在那之后如果我改变重命
  • Spark - 提交应用程序时出现错误“必须在您的配置中设置主 URL”

    我有一个 Spark 应用程序 在本地模式下运行没有问题 但在提交到 Spark 集群时遇到一些问题 错误信息如下 16 06 24 15 42 06 WARN scheduler TaskSetManager Lost task 2 0
  • python:模块没有属性 mechanize

    usr bin env python import mechanize mech mechanize Browser page br open SchoolRank KY Gives Traceback most recent call l
  • 如何通过 Intent 在 Android 中打开文件

    如何打开以前存储在 私有 文件系统中的文件 该文件正在由网络服务下载 并应存储在本地文件系统上 尝试通过意图 Action View 打开文件时出现 奇怪 错误 尽管该文件存在于文件系统中 在模拟器 Eclipse 的文件资源管理器中看到该