从通知中打开文件

2024-05-14

我从服务器下载一个文件。对于此操作,我显示了进度不确定的通知。下载文件后,我想通过单击通知来打开它。

我获得了扩展名并尝试使用以下命令打开它intent像这样

public static Intent openFile(Context context, File file) {
    String fileName = file.getName();

    String extension = fileName.substring(fileName.lastIndexOf(".") + 1);


    String type = "application/" + extension;

    if (getAttachmentType(fileName) == AttachmentType.IMAGE) {
        type = "image/*";
    } else if (getAttachmentType(fileName) == AttachmentType.AUDIO) {
        type = "audio/*";
    } else if (getAttachmentType(fileName) == AttachmentType.VIDEO) {
        type = "video/*";
    } else if (getAttachmentType(fileName) == AttachmentType.WORD) {
        type = "application/msword";
    } else if (getAttachmentType(fileName) == AttachmentType.EXCEL) {
        type = "application/vnd.ms-excel";
    } else if (getAttachmentType(fileName) == AttachmentType.POWERPOINT) {
        type = "application/vnd.ms-powerpoint";
    } else if (getAttachmentType(fileName) == AttachmentType.TXT) {
        type = "text/*";
    }

    Uri path = Uri.fromFile(file);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    Intent chooser = Intent.createChooser(intent, context.getResources().getString(R.string.open_file_with));
    intent.setDataAndType(path, type);
    return chooser;
}

并在通知上执行此操作

Intent intent = ActionsHelper.openFile(context, file);
if (intent != null) {
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
      mBuilder.setContentIntent(pendingIntent);
}

我的问题是,对于任何扩展,选择器上的消息都是没有应用程序可以执行此操作。我错过了什么吗?


好吧,我找到了。我替换

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

with

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

它起作用了

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

从通知中打开文件 的相关文章

随机推荐

  • “正确的方式”导入 Hotmail 联系人? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Django 1.8 KeyError:关系上的“经理”

    我的模型设置如下 class Post models Model name models CharField max length 10 class Comment models Model post models ForeignKey P
  • 存储 PHP 数组的首选方法(json_encode 与序列化)

    我需要将多维关联数据数组存储在平面文件中以进行缓存 我偶尔可能会遇到需要将其转换为 JSON 以便在我的 Web 应用程序中使用的情况 但绝大多数时候我会直接在 PHP 中使用该数组 在此文本文件中将数组存储为 JSON 或 PHP 序列化
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera
  • LINQ WHERE 语句/忽略条件

    如果参数为 null 或为空 我需要忽略 WHERE 语句中的部分或全部条件 FE 我有简单的 LINQ 查询 var query from x in context a where x p param1 x i param2 select
  • 防止隐藏的输入被更改

    这一直让我压力很大 我有一个隐藏的输入
  • 当缩放元素在缩放之前大于容器时,CSS 变换比例(向下)不会使用 margin 0 auto 将元素居中

    看来 当缩小以前不适合其容器的元素时 margin 0 auto将不再使元素在其父元素中居中 请注意 使用transform origin center center并没有解决这个问题 这是因为自动边距似乎在缩放之前而不是之后应用 我期望后
  • Python 线程在 main 中调用一次时运行两次[重复]

    这个问题在这里已经有答案了 if name main t threading Thread target authtarget t daemon True t start print running thread app run debug
  • 如何使用存储在 Cocoa Touch 框架中的 Localized.strings?

    我想为 CocoaTouch 框架添加多语言支持 问题 可本地化的字符串我创建的文件仅被使用NSLocalizedString当它是主应用程序及其目标的一部分时 我想将其存储在框架内以将事物分开 我怎样才能使用可本地化的字符串当放置在 Co
  • 如何在 win 窗体项目中创建用户控件的 dll?

    我在项目中创建了这个用户控件 当我编译项目时 我看到项目 dll 但是 当我编译项目时 我怎样才能做到这一点 它也会创建一个用户控件的 dll 以便稍后在其他项目上我能够将此用户控件 dll 添加到我的工具箱中 Module Name Li
  • AttributeError:尝试在 python 中运行 sqlalchemy 来管理我的 SQL 数据库时,“Engine”对象没有属性“execute”

    我有以下代码行不断给我一个错误 即引擎对象没有对象执行 我认为我一切都对 但不知道接下来会发生什么 似乎其他人也遇到了这个问题 重新启动他们的笔记本电脑就可以了 我正在使用 Pycharm 并已重新启动但没有任何解决方案 任何帮助是极大的赞
  • Fine-Tuning DistilBertForSequenceClassification:不是学习,为什么loss没有变化?权重没有更新?

    我对 PyTorch 和 Huggingface transformers 比较陌生 并对此尝试了 DistillBertForSequenceClassificationKaggle 数据集 https www kaggle com c
  • Plotly 绘图不会在 RMarkdown 文档的 for 循环内渲染

    我正在尝试动态构建一个需要运行循环的报告 并为每次迭代打印一些消息 表格和绘图 我可以让一切正常运转except为了情节 示例 rmd r echo FALSE results asis fig keep all message FALSE
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • Angular4 - 滚动到锚点

    我正在尝试对同一页面上的锚元素进行简单的滚动 基本上 用户点击 尝试 按钮 它就会滚动到页面下方 ID 为 登录 的区域 现在 它正在与一个基本的id login a href login a 但它正在跳转到该部分 理想情况下 我希望它滚动
  • 背景 JPanel 上的 JScrollPane 中的透明 JEditorPane

    如果我移动 JScrollPane 使其位于 JPanel 前面并部分覆盖 JPanel 则 JScrollPane 内部的 JEditorPane 会出现绘制问题 它无法正确地重新绘制 JPanel 的背景 因此 当您滚动时 您最终会遇到
  • 使用 GD lib 过滤器标准化 CSS 过滤器

    我想让用户拖动范围滑块并通过实时预览 CSS 滤镜 调整图像的亮度和对比度 然后使用 GD 库保存调整 但是 我似乎无法从 CSS 过滤器和 GD lib 亮度和对比度过滤器获得相同的结果 我的 CSS 过滤器范围为 50 150 其中 1
  • ScrollView 和 LinearLayout 的困难

    我正在尝试制作一个 Android 布局 垂直 LinearLayout 内有 3 个组件 中心组件是一个ScrollView其中包含一个TextView 当 的时候TextView包含大量文本 超出了屏幕所能容纳的范围 ScrollVie
  • Hashmap 中的重新哈希[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 初始容量和负载系数两个影响参数HashMap表现 默认负载系数 75 在时间和空间成本之间提供了良好的权衡 较高的值会减少空间开销 但
  • 从通知中打开文件

    我从服务器下载一个文件 对于此操作 我显示了进度不确定的通知 下载文件后 我想通过单击通知来打开它 我获得了扩展名并尝试使用以下命令打开它intent像这样 public static Intent openFile Context con