如何在应用程序选择器中直接从URL打开PDF文件

乌鸦

我需要打开一个从JSON的URL获取的PDF文件。

该URL的末尾不包含文件扩展名。我尝试过这样的事情:

        final String pdfUrl = dataUrl.replace("data", "file") + "/x?filefield=" + tf.getFieldName() + "&context=\"" + dataItemIdModOne + "\"&skipcache=1";
        SharedPreferences sharedPrefs = getActivity().getSharedPreferences(Constants.userDetails, MODE_PRIVATE);
        String username = sharedPrefs.getString(Constants.user, "");
        String password = sharedPrefs.getString(Constants.pass, "");
        String userPassword = username + ":" + password;
        final String basicAuth = "Basic " + new String(new Base64().encode(userPassword.getBytes()));
        final Map<String, String> extraHeaders = new HashMap<>();
        extraHeaders.put("Authorization", basicAuth);
        pdfIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Uri uri = Uri.parse(pdfUrl);
                Intent target = new Intent(Intent.ACTION_VIEW);
                target.setDataAndType(uri,"*/*");
                Bundle bundle = new Bundle();
                bundle.putString("Authorization", basicAuth);
                target.putExtra(Browser.EXTRA_HEADERS, bundle);

                Intent intent = Intent.createChooser(target, "Open File");
                try {
                    startActivity(intent);
                } catch (ActivityNotFoundException e) {
                    Toast.makeText(getActivity(), "Please install PDF app", Toast.LENGTH_SHORT).show();
                }
            }
        });

我只需要向用户提供一个应用选择器,以便他/她将使用巫婆应用来选择打开文件,或者充其量只是直接在他/她的设备上打开可用的PDF阅读器。

通过此实现,我得到了应用选择器,并在尝试打开文件时加载了该文件,但最后它说无法打开。

因此,使用此URL进行的钻探是,当调用URL时,它将重定向到另一个包含PDF文件本身的URL。但是我看不到第二个URL。另外,当我将URL粘贴到浏览器中时,它会要求输入用户名和密码(这就是为什么我需要基本身份验证)。

提前致谢。

常用软件

PDF查看器很少(如果有)支持http/https支持他们的ACTION_VIEW活动。实际上,它们中没有一个会支持随机Intent附加项,例如EXTRA_HEADERS

使用您喜欢的HTTP客户端API(例如HttpUrlConnection,OkHttp)自己下载PDF 然后,使用ACTION_VIEW来查看下载的PDF。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在iOS中显示指向应用程序沙箱的文件选择器?

如何在我的应用程序中使用 Safari 的输入文件选择器?

Nativescript 应用程序不会在 WebView 上打开文件选择器

如何在具有动态URL和子域的Web应用程序中使用OneDrive的选择器?

文件选择器从PhoneGap Cordova Android应用程序中浏览本地存储来选择docx,pdf文件

如何在文本编辑器/ Visual Studio Code中直接从FTP打开文件

如何从文件管理器打开应用程序并直接播放视频?

如何在chrome标签中直接打开某些类型的文件?

如何在外部应用程序中实现AutoCAD颜色选择器

如何在 /bootstrap 4.6 应用程序中正确显示日期时间选择器?

如何在Xcode for iOS应用程序中创建联系人选择器?

如何在我的 iOS 应用程序中获得这种颜色选择器视图?

每次在 Android Studio 中运行应用程序时如何打开设备选择器?

如何在Xamarin Forms的默认应用程序中打开PDF或TXT文件

iOS 如何在邮件应用程序中打开 PDF?

如何在Python Kivy应用程序中打开pdf?

Linux如何选择打开文件的应用程序?

当文件选择器未选择文件时应用程序崩溃

在棉花糖中打开图像选择器时,应用程序崩溃

无法在iPhone流星应用程序中打开引导日期时间选择器

如何直接从 URL 快速打开 pdf 文件

批处理应用程序选择器无法在同一文件夹中打开程序

如何在 Flask 应用程序中打开多个 url

如何在Xamarin中更改选择器弹出框的颜色/样式(在iOS上运行应用程序)

如何在 React 应用程序中使用 ::before CSS 伪选择器修改 Font Awesome 图标?

如何在Flutter应用程序中从磁盘打开文件?

如何在Qt应用程序中打开文件?

如何在应用程序服务器上将假脱机请求转换为 PDF 文件?

如何在Android应用程序中将Pdf文件上传到服务器