如何在Android上的WebView中读取Blob中的数据? [复制]

2023-11-25

我有一个在浏览器上创建对象 blob 的服务器,我想在 Android 应用程序的 WebView 中下载它。我尝试将请求重定向到浏览器实例以及使用下载管理器来执行此操作,但它们似乎都不起作用(即使我在 Chrome 中打开同一页面,下载操作也可以在那里工作)。

我尝试了以下代码,它抛出错误:

Android.content.ActivityNotFoundException:找不到处理 Intent 的 Activity { act=android.intent.action.VIEW dat=blob:https%3A//111.111.111.111%3A8080/40b63131-63b1-4fa4-9451-c6297bbd111a"

Edit

Android.content.ActivityNotFoundException:找不到处理 Intent 的 Activity { act=android.intent.action.VIEW dat=blob:http://digitalinsensu.com/0f0d6127-a0f1-44c3-af85-72f648258d6d


Code:

mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,String contentDisposition, String mimetype,long contentLength) {
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
}
});

这会抛出 java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs 错误:

mWebView.setDownloadListener(new DownloadListener() {
    public void onDownloadStart(String url, String userAgent,String contentDisposition, String mimetype,long contentLength) {
        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
        request.allowScanningByMediaScanner();
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "download");
        DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
        dm.enqueue(request);

    }
});

我应该如何下载 blob?任何帮助,将不胜感激。


您需要拦截处理 url 点击的回调,如下所示:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        shouldOverrideUrlLoading(view, Uri.parse(url));
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        return shouldOverrideUrlLoading(view, request.getUrl());
    }

    // legacy callback
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            return shouldOverrideUrlLoading(view, Uri.parse(url));
        }
        return super.shouldOverrideUrlLoading(view, url);
    }

    private boolean shouldOverrideUrlLoading(final WebView view, final Uri request) {
        if(request.getScheme().equals("blob")) {
            // do your special handling for blob urls here
            return true;
        }
    }
});

In shouldOverrideUrlLoading()你可以做你的特殊处理。

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

如何在Android上的WebView中读取Blob中的数据? [复制] 的相关文章

随机推荐

  • 警告:函数“getline”的隐式声明

    嗨 我即将完成课堂项目 我需要根据几个因素对航空公司人员的优先级进行排序 这是我的项目描述 一家航空公司使用下面所示的公式来确定乘客的优先顺序 超额预订航班的等候名单 优先级数 A 1000 B C 在哪里 A为客户过去一年的总里程 B 是
  • 自定义 Google 翻译下拉菜单

    我有一个网站 并在该网站中添加谷歌翻译器 以便人们可以查看不同语言的网站 我添加的代码是 div div div div
  • 为什么循环导入看起来在调用堆栈中更上层工作,但随后又向下引发 ImportError ?

    我收到这个错误 Traceback most recent call last File Users alex dev runswift utils sim2014 simulator py line 3 in
  • 为什么在结构定义之后使用 typedef?

    两种风格 struct something typedef struct something someting 以及那种风格 typedef struct something something 是 C 中正确的 typedef 声明 请注
  • 为什么带有 SQL 查询参数的 psycopg2cursor.execute() 会导致语法错误?

    当在Python中的psycopg2中指定execute 的参数时 如下所示 cursor execute SELECT FROM s my table 我收到此错误 psycopg2 ProgrammingError syntax err
  • 如何找到 Android 2.3.3 平台的源代码?

    当处于调试模式时 我收到一条 Android 内容未找到源消息 我正在使用 Andorid 10 来匹配我的设备 在 android sdk sources 中 我有 android 14 和 Android 15 如何以及在哪里可以获得
  • 带有参考的插件不适用于 CRM 2011

    我创建了一个插件并使用了对我创建的另一个项目 DLL 的引用 问题是当我尝试运行该插件时 我收到一条 CRM 错误 无法加载文件或程序集 XXX Version 1 0 0 0 Culture neutral PublicKeyToken
  • Android:addview()-在 Activity 之上添加新视图

    我有以下带有图像视图和文本字段的布局
  • 如何检查变量是否包含中文/日文字符?

    如何检查变量是否包含中文或日文字符 我知道这条线有效 if document body innerText match u3400 u9FBF 我需要做同样的事情 不是针对文档 而是针对单个变量 match是一个字符串方法 您可以将其应用于
  • 在 C++ Armadillo 中,push_back/append 或用循环附加向量

    我想创建一个整数向量 arma uvec 我事先不知道向量的大小 我在犰狳文档中找不到合适的函数 而且我没有成功地通过循环创建向量 我认为问题在于初始化向量或跟踪其长度 arma uvec foo arma vec x arma uvec
  • 确定第 3 方应用程序安装目录

    我有一个应用程序在公司的数百台计算机上使用 我必须修改应用程序安装目录中的 INI 文件 用户可以在任意位置安装该应用程序 并且可以在任何给定时间安装该应用程序的多个版本 我需要能够找到该安装目录 到目前为止我考虑过的方法 使用 Windo
  • XamlReader 生成 DataTemplate 的问题

    我正在尝试在我的 WPF 项目中实现下面的代码 以便为具有动态列的 DataGrid 动态生成 DataTemplates 我在 StackOverflow 上找到了代码here public DataTemplate Create Typ
  • 什么可以解码我编码的哈希符号(%23)?

    我们注意到有几台机器在处理带有哈希参数的 URL 时存在问题 调试带有 URL 的请求时 http domain com Entity 23 number here 我们看到在Application BeginRequest方法中的glob
  • 无法在 Django 中导入 GeoIP 模块

    我正在使用 Django 1 5 5 设置 py GEOIP PATH os path join PROJECT DIR geoIP INSTALLED APPS django contrib gis 视图 py from django c
  • 在一行中编写 F# 对象表达式

    当我准备为 F 编写一个代码生成器时 我想知道是否可以通过仅生成单行值来避免陷入缩进混乱 作为这项工作的一部分 我正在考虑如何在一行中表达对象表达式 但没有成功 除非在详细模式下 let Expr let ToString ToString
  • Python 和 Selenium xpath 用于选择多个条件

    我在 selenium 中有以下代码 但仍然出现语法错误 我正在尝试根据多个条件选择一个元素 choices driver find elements by xpath div contains 5 and contains class o
  • 为什么 Python 集合不保留插入顺序?

    我最近惊讶地发现 虽然在 Python 3 7 中字典可以保证保留插入顺序 但集合却不能 gt gt gt d a 1 b 2 c 3 gt gt gt d a 1 b 2 c 3 gt gt gt d d 4 gt gt gt d a 1
  • 为什么 C# 中的数组参数要使用 ref ?

    我读了该页使用 ref 和 out 传递数组 C 编程指南 并想知道为什么当数组参数已经是引用类型时我们需要将其定义为 ref 参数 被调用函数中的更改不会反映在调用函数中吗 被调用函数中的更改不会反映在调用函数中吗 更改为contents
  • JavaScript 事件序列

    JavaScript 中的某些事件先于其他事件触发 例如 对于输入元素 首先触发 keydown 和 keypress 事件 然后 如果这些返回值不为 false 则更新 input value 然后 将触发 keyup 事件 是否有一个网
  • 如何在Android上的WebView中读取Blob中的数据? [复制]

    这个问题在这里已经有答案了 我有一个在浏览器上创建对象 blob 的服务器 我想在 Android 应用程序的 WebView 中下载它 我尝试将请求重定向到浏览器实例以及使用下载管理器来执行此操作 但它们似乎都不起作用 即使我在 Chro