gpt4 book ai didi

android - 如何从 intent 过滤器接收 pdf 文件 - Android

转载 作者:行者123 更新时间:2023-12-04 14:48:25 24 4
gpt4 key购买 nike

我已经构建了一个 PDF 阅读器,我想从手机 Ex 的任何地方打开 pdf。 Whatsapp,文件管理器。

当我从谷歌文件管理器打开 pdf 时,它正在工作,当我从默认文件管理器打开它时,它崩溃了

显示这个错误

     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.os.Bundle.get(java.lang.String)' on a null object reference

应用 list 文件

        <activity
android:name=".PDF_Viewer"
android:exported="true">

<intent-filter>

<action
android:name="android.intent.action.VIEW" />

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

<data
android:mimeType="application/pdf" />

</intent-filter>

<intent-filter>

<action
android:name="android.intent.action.VIEW" />

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

<data
android:scheme="file"
android:host="*"
android:pathPattern=".*\.pdf" />
</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:scheme="http"
android:host="*"
android:pathPattern=".*\.pdf" />

<data
android:scheme="https"
android:host="*"
android:pathPattern=".*\.pdf" />
</intent-filter>

</activity>

我在 PDF 查看器 Activity 中收到这样的 Intent :

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
Uri pdf = (Uri) bundle.get(Intent.EXTRA_STREAM);

最佳答案

你所有的三个<intent-filters>用于 ACTION_VIEW . The documentation for ACTION_VIEW 有:

Input: getData() is URI from which to retrieve data.

因此,考虑到这一点,将您的 Java 代码替换为:

Intent intent = getIntent();
Uri pdf = intent.getData();

您可以考虑检查现有的 PDF 查看器应用程序,看看它们是如何工作的。有many open source ones listed on F-Droid ,例如。

关于android - 如何从 intent 过滤器接收 pdf 文件 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69523588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com