将 App 与 Epub 格式关联

2023-12-28

我无法让我的应用程序在移动设备上注册 epub 文件。我的 android 清单中有一组意图过滤器,但它仍然无法使用 sd 卡上的 epub 文件打开。当我经过File Explorer应用程序,它显示该文件,但是当我单击它时,它显示“系统不支持这种类型的文件:”。当我从互联网下载文件,然后使用下载应用程序导航到下载文件夹时,该文件根本不显示(即使它位于文件浏览器的下载文件夹中)。我还尝试让 epub 文件与文件选择器意图一起显示(Intent.ACTION_OPEN_DOCUMENT),但没有运气。我猜最后两个不会出现,因为意图加载Intent.CATEGORY_OPENABLE

我尝试了多个 epub 文件,但都没有成功。

有人可以帮我弄清楚我缺少什么吗?

使用 KitKat 及更高版本的手机。

注:这个does从互联网上下载。如果我转到 epub 链接,这可以工作,但不能从文件系统进行。

        <!-- Open File Types -->
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:host="*" android:scheme="file"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:host="*" android:scheme="file" android:mimeType="text/plain"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="file"/>
            <data android:mimeType="application/epub+zip"/>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="http"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="http" android:mimeType="text/plain"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="http"/>
            <data android:mimeType="application/epub+zip"/>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="https"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="https" android:mimeType="text/plain"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="https"/>
            <data android:mimeType="application/epub+zip"/>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="content"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="content" android:mimeType="text/plain"/>
            <data android:pathPattern=".*\\.epub"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="content"/>
            <data android:mimeType="application/epub+zip"/>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:host="*" android:scheme="book"/>
        </intent-filter>

        <intent-filter
            android:icon="@raw/icon"
            android:label="ePub File"
            android:priority="1" >
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data android:scheme="http" />
            <data android:scheme="https" />
            <data android:scheme="ftp" />
            <data android:scheme="file" />
            <data android:host="*" />
            <data android:mimeType="*/*" />
            <data android:pathPattern=".*\\.epub" />
        </intent-filter>

Update:

寻找以下赏金问题的答案:

  1. 如何让 Android 系统识别内部或外部存储上的 epub 文件可以用我的应用程序打开?
  2. 如何获取默认文件浏览器(存储访问框架 https://developer.android.com/guide/topics/providers/document-provider.html) 显示 epub 文件?

如何让 Android 系统识别内部或外部存储上的 epub 文件可以用我的应用程序打开?

“安卓系统”与它没有太大关系,尤其是在今天。

支持于MimeTypeMap(或者,更准确地说,libcore.net.MimeUtils来自框架类).epub/application/epub+zip was 约 35 小时前添加 https://android.googlesource.com/platform/libcore/+/7da22a29061da1553687258af71373417f2ae196。据推测,它会出现在 Android 的未来版本中。在此之前,唯一使用该 MIME 类型的文件管理器是那些本身添加了该类型的文件管理器。

从较高的层面来看,当遇到这样的问题时,解决方案相当简单:

  1. 找到另一个可以执行您想要的操作的应用程序(在本例中为另一个 EPUB 阅读器)

  2. Use 应用程序浏览器应用程序 https://play.google.com/store/apps/details?id=com.japanesecrackers.appbrowser查看该应用程序的清单以及它选择的用途<intent-filter> stanzas

一般来说,我通常会看到一个<intent-filter>具有方案和 MIME 类型or方案、主机和路径的东西。具有 MIME 类型and路径的东西不太可能有帮助,就好像Intent没有明确地包含 MIME 类型,并且 Android 不知道将该特定扩展名映射到您的 MIME 类型,您的<intent-filter>可能不匹配。

此外,您还需要使用多个“文件管理器”应用程序进行测试,因为 Android 没有文件管理器,因此您可能会在正在测试的应用程序中遇到错误/限制。

如何让默认文件浏览器(存储访问框架)显示 epub 文件?

指定正确的 MIME 类型并祈祷奇迹出现。

再次强调,直到 Android 本身提供更多内置的映射支持.epub对于 MIME 类型,您依赖于存储提供商本身恰好知道.epub映射到application/epub+zipMIME 类型。一些提供商会这样做,因为他们从某些后端服务器获取信息,这些服务器可能比 Android 本身知道更多的 MIME 类型。有些提供商可能不会,例如 Android 的MediaStore-支持外部存储内容的提供商,因为我对此表示怀疑MediaStore对 EPUB 文件有自己的本地支持。

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

将 App 与 Epub 格式关联 的相关文章

  • Android 通知进度条冻结

    这是我正在使用的代码 http pastebin com 3bMCKURu http pastebin com 3bMCKURu 问题是 一段时间后 文件变得更重 通知栏下拉速度变慢 最后它就冻结了 你的通知太频繁了 这就是它冻结的原因 让
  • Android - 如何一次只允许播放一个 MediaPlayer 实例?

    我正在尝试创建一个简单的 Sound board Android 应用程序 使用 ListView 项目作为按钮 顺便说一句 我是一个新手程序员 我的想法是 我按下一个按钮 就会播放一个特定的声音文件 如果我在播放声音时按下任何按钮 它应该
  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • TextView 之间有分隔线

    我正在尝试在 android studio 中创建以下布局 因为我对 android 东西还很陌生 所以我第一次尝试使用 LinearLayout 并认为这可能无法实现 现在我正在尝试使用RelativeLayout 我已经用颜色创建了这个
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框

随机推荐

  • 与 docker swarm 的粘性会话

    我有一个使用 socket io 的 dockerized node js 应用程序 通过 docker compose 我在同一服务器上的两个不同容器上运行该应用程序的 2 个副本 然而 到达服务器的请求是以循环方式分发的 有没有一种方法
  • 将逗号分隔的列数据拆分为附加列

    我在一列中有逗号分隔的数据 Column a b c d 我想将逗号分隔的数据拆分为多列以获得以下输出 Column1 Column2 Column3 Column4 a b c d 如何才能实现这一目标 split part https
  • 查找数组中没有特定值的第一个值

    我怀疑这个问题很简单 但仍然是 我正在寻找一种有效的方法来从没有特定值的数组中获取第一个元素 例如 给定 Fred Fred Fred James Alex Fred 我想归还 詹姆斯 我可以通过类似的方式做到这一点 thearray se
  • Windows 中的 Confluence 平台

    是否可以在 Windows 上运行完整的 Confluence 平台 如果不是 运行 Confluence 平台的最佳方式是什么 Thanks Per 支持的操作系统列表 https docs confluent io current in
  • 如何在 REST 中创建 POST 请求以接受 JSON 输入?

    我正在尝试学习 RESTful Web 服务 我正在创建一组简单的网络服务 当我开始处理 POST 时遇到了困难 我想将 JSON 输入传递给 POST 方法 这就是我在代码中所做的 RequestMapping value create
  • 如何使用 VSCode 在虚拟环境中调试 python 代码?

    EDIT 使用 VSCode 我在虚拟环境中调试时遇到了问题 该环境具有未安装在base环境 使用命令激活环境后activate my env 我可以使用通常的 python 命令在环境中使用这些包python main py 但是在调试时
  • 2 个 cgi 脚本中的会话登录和注销

    我需要在用户登录时存储登录会话 并在用户退出系统或会话超时时删除登录会话 我正在用 Perl 编码 我知道我可以在 Perl 中使用 CGI Session 模块 但是如何确保会话是由 1 个 cgi 脚本创建并由另一个 cgi 脚本删除的
  • 如何通过 Qt WebGL 流向多个用户提供 Qt 应用程序?

    Qt Quick WebGL 流媒体 https www qt io blog 2018 11 23 qt quick webgl release 512是一种技术 任何 Qt Quick QML 应用程序都可以向通过 Web 浏览器连接的
  • 如何在 MongoDB 中启用数据压缩

    在 MongoDB 中 WiredTiger 提供了 Zlib 压缩选项 为了启用 Zlib 压缩选项 我使用以下代码创建了一个集合 db createCollection questions storageEngine wiredTige
  • 错误:WebhookClient.handleRequest 上没有请求意图的处理程序

    调用云函数的默认意图会出现错误 Error No handler for requested intent at WebhookClient handleRequest user code node modules dialogflow f
  • Powershell Get-ChildItem 进度问题

    所以 我在一个文件夹中有一组目录 00 99 每个目录都有 100 个子目录 00 99 每个子目录都有数千张图像 我想做的基本上是在计算平均文件大小时获得进度报告 但我无法让它发挥作用 这是我当前的查询 get childitem
  • 有没有办法更新工作项的“部署”部分?

    有谁知道更新工作项的 部署 部分的方法 我还没有找到任何可以执行此操作的任务的工作示例 cli 命令或 API 调用 这似乎是Azure DevOps Releases产品的独有功能 但我希望能够使用多阶段 YAML 管道来实现类似的东西
  • 在 Python 中定义带有可选参数的类

    class class1 def setdata self value1 value2 self data value1 value2 def display self print self data 对于上面的代码 当我使用它的时候 它需
  • C# - SqlDataReader 和序列化

    SqlDataReader 可以传递到会话或发送到客户端吗 例如 如果我从数据库中检索了一些行 并希望将此数据发送到另一台客户端计算机 我可以简单地通过在服务器上使用 json 序列化它然后在客户端上反序列化来完成此操作吗 不 只有数据 没
  • 在没有 epmd 的情况下启动 erlang VM

    我正在尝试与 erlang 虚拟机分开启动 epmd 以便对连接处理进行监控 这工作得很好 除了虚拟机在 epmd 之前启动的情况 有没有办法让 erlang 虚拟机启动而不自行启动 epmd 从 Erlang OTP 19 0 开始 有a
  • getPathValue() 函数用于具有数组和打包 JSON 的深层对象

    有关背景 请参考这个问题 访问嵌入式 JSON 的深层对象成员 https stackoverflow com q 53819904 3566998 那里提供的解决方案与键值中包含的打包 JSON 配合得很好 但是 它们不处理 JSON 具
  • 从静态方法获取应用程序实例

    在 Android 中使用静态方法获取应用程序继承者的实例是否正确 我在一些开源项目中看到过这种方法 VLC https github com mstorsjo vlc android blob master vlc android src
  • 如何在 Docker 镜像中安装 grails?

    我正在致力于将基于 grails 构建的现有应用程序容器化 我已经能够在一段时间内成功构建该项目debian stretch图像 是的 我知道那很旧 但该项目最初是用几乎所有内容的旧版本构建的 gradle maven and defaul
  • Java NIO 窗口实现

    在使用 NIO 2 AIO 功能进行项目时 我查看了 旧的 NIO 选择器实现 发现在 Windows 上使用了默认的选择函数 由于内部实现不良 该函数在 Windows 上根本无法扩展 大家都知道 在 Windows 上 IOCP 是唯一
  • 将 App 与 Epub 格式关联

    我无法让我的应用程序在移动设备上注册 epub 文件 我的 android 清单中有一组意图过滤器 但它仍然无法使用 sd 卡上的 epub 文件打开 当我经过File Explorer应用程序 它显示该文件 但是当我单击它时 它显示 系统