WebView不能下载apk文件

本文介绍了一个关于Android中WebView无法响应下载按钮的小问题及其解决方案。通过自定义DownloadListener并实现onDownloadStart方法,可以成功实现对特定文件类型的下载处理。

Android中WebView的一个小问题:

昨天用WebView加载网页时,点击下载按钮无法响应下载动作。

[ 小弟之前整理的WebView设置大全]

排除问题:

首先想到的当然是网页本身的问题,用PC加载网页后法案现阔以正常下载。那这样的话问题就在WebView上了。

思考问题:

小弟这种小弱鸡当然选择进技术群(不是水群),问一下大佬是最快速有效合理的方法,并且还能帮大佬巩固一下小知识点。
询问之后知道WebView有一个DownLoadListener方法。
那咱们的解决方式就是自定义DownLoadListener,然后再通过WebViewsetDownLoadListener关联DownLoadListener

DownLoadListener源码:

package android.webkit;

public interface DownloadListener {

    /**
     * Notify the host application that a file should be downloaded
     * (onDownLoadStart:将一个文件下载到主机应用程序中)
     * @param url The full url to the content that should be downloaded
     * (url链接到应该下载的内容的完整url,也就是apk下载路径。)
     * @param userAgent the user agent to be used for the download.
     * @param contentDisposition Content-disposition http header, if present.(将用于下载的用户代理。不知道怎么用,目前用不到。)
     * @param mimetype The mimetype of the content reported by the server(mimetype是服务器报告的内容的mimetype)
     * @param contentLength The file size reported by the server
     * (内容长度由服务器报告的文件大小)
     */
    public void onDownloadStart(String url, String userAgent,
            String contentDisposition, String mimetype, long contentLength);

}
解决问题:

首先自定义DownloadListener,在重写的onDownLoadStart方法中判断url的后缀是否是.apk,如果是的话调用系统下载APK:

/*
 *自定义DownLoadListener
 */
class MyDownLoad implements DownloadListener {
        @Override
        public void onDownloadStart(String url, String userAgent,
                                        String contentDisposition, String mimetype, long contentLength) {
        if (url.endsWith(".apk")) {
          /**
           * 通过系统下载apk
           */
           Uri uri = Uri.parse(url);
           Intent intent = new Intent(Intent.ACTION_VIEW,uri);
           startActivity(intent);
            }
        }
    }
//WebView设置下载监听    
webView.setDownloadListener(new MyDownLoad());

好了,现在加载网页就可以正常的响应网页上的点击事件了。

如有问题请多指正,您的指正使我更我正确的前行.

<think> 首先,用户查询是:“我想下载webview 93版本的apk文件 请问webview 93版本apk下载”。这涉及到在Android设备上安装特定版本的WebView APK。 从系统级指令,我需要: - 使用$...$格式的行内数学表达式,但这里可能不涉及数学公式,所以可以忽略。 - 独立公式用$$...$$,但同样可能不需要。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识,如[^1]。 用户提供了站内引用: - 引用[1]: 描述了在WebView中通过shouldOverrideUrlLoading方法处理APK下载链接,启动系统浏览器下载- 引用[2]: 提到WebView不能直接下载APK文件,建议使用DownLoadListener来处理。 用户的需求是下载Android System WebView 93版本的APK文件Android System WebViewAndroid系统组件,通常通过Google Play Store更新,但用户可能想手动下载特定版本的APK。 关键点: - Android WebView APK通常来自官方源,如Google Play或APK镜像站。 - 手动下载APK需要谨慎,确保来源可信,以避免安全风险。 步骤回答: 1. **理解需求**:用户想下载WebView 93版本的APK文件。93版本可能指的是版本号为93的WebView。 2. **官方来源**:建议首选官方渠道。WebView可以通过Play Store更新,但手动下载APK适用于设备无Play Store或特定版本需求。 3. **可信来源**:推荐可信的APK下载站点,如APKMirror(https://www.apkmirror.com),因为它提供安全验证的APK。 4. **搜索方法**:指导用户如何在APKMirror上搜索WebView 93版本。 5. **下载注意事项**:警告安全风险,如上一步所述。 6. **Android设置**:下载后如何在设备上安装APK(需启用未知来源安装)。 参考用户提供的引用: - 引用[1]关于WebView shouldOverrideUrlLoading方法处理下载,这适用于在WebView中拦截下载链接。但用户直接要下载APK,所以这可能不直接相关,除非用户是从某个网站触发下载- 引用[2]关于WebView不能下载APK,需自定义DownloadListener。同样,用户是要下载APK文件本身,而不是在WebView应用中实现下载。 因此,回答应聚焦于如何下载WebView 93 APK,而不是如何在应用中实现下载逻辑。 结构化回答: - **解释WebView组件**:简要说明Android System WebView是什么。 - **下载步骤**: - 推荐APKMirror。 - 指导搜索“Android System WebView 93”。 - 提供直接链接(如果可能)。 - 安装步骤简述。 - **安全警告**:强调只从可信来源下载- **相关问题生成**:最后添加相关问题。 生成相关问题基于主题: 1. 如何验证下载APK文件安全性? 2. 手动安装WebView APK的常见问题? 3. 如何回滚或更新Android WebView版本? 确保回答真实可靠: - APKMirror是可信的,由Android Police团队运营。 - WebView版本93可能较老(截至2023年10月,最新版本更高),但用户指定了93。 完整回答: - 开头回应需求。 - 分步骤指导。 - 结束时添加相关问题。 - 在引用处添加[^1]和[^2]标识,但用户提供的引用是站内引用,我需要合理引用在回答中。如果不直接使用引用内容,可以不强制添加,但指令说“引用的段落末尾自然地添加引用标识”,所以我应该只在直接引用时添加。 在回答中,如果我提到引用[1]或[2]的内容,就添加标识。例如,如果解释WebView下载机制时引用它们。 但用户的需求是直接下载APK,引用是关于在WebView应用中处理下载,所以可能不直接适用。我可以忽略引用,除非相关。 再读用户消息:"上述引用仅供参考,并不是用户真正的需求",所以引用只是上下文,我应该基于用户查询回答。 最终回答大纲: 1. 介绍:用户想下载WebView 93版本APK。 2. 推荐方法:使用APKMirror搜索下载。 3. 步骤详解。 4. 安装指南。 5. 安全提醒。 6. 相关问题。 在回答中,使用中文。 </think> ### 如何下载 Android System WebView 93 版本 APK 文件 Android System WebViewAndroid 系统中的关键组件,用于在应用中显示网页内容。用户通常可以通过 Google Play Store 自动更新,但如果您需要手动下载特定版本(如 93 版本),以下是安全可靠的步骤和方法。**注意:手动下载 APK 文件存在安全风险,请务必只从可信来源下载,以避免恶意软件**。以下步骤基于可信的第三方平台 APKMirror(https://www.apkmirror.com),该站点提供已验证签名的 APK 文件。 #### 步骤 1: 访问可信的下载站点 推荐使用 APKMirror,因为它由 Android Police 团队运营,对所有上传的文件进行安全验证: - 打开浏览器(如 Chrome),访问 APKMirror 官网:https://www.apkmirror.com。 - 在搜索框中输入 “Android System WebView 93” 或 “com.google.android.webview”。 - 查找版本号为 93.x 的 APK(例如,93.0.4577.82)。WebView 版本命名通常类似 “93.0.XXXX.XX”,请确认版本号匹配。 如果找不到直接结果,可以尝试以下链接: - [Android System WebView 所有版本列表](https://www.apkmirror.com/uploads/?q=android+system+webview) - 特定版本搜索过滤:在列表页面按 “Version” 排序,定位 93.x 版本。 #### 步骤 2: 下载 APK 文件 - 在搜索结果中,点击合适的版本条目(如 “Android System WebView 93.0.4577.82”)。 - 进入详情页后,选择 “Download APK” 按钮。 - 下载文件通常名为 “AndroidSystemWebView_93.apk”(具体名称可能略有不同)。 **重要提示**: - APKMirror 会显示文件的 MD5/SHA-1 校验值,下载后建议使用工具(如 [Hash Droid](https://play.google.com/store/apps/details?id=com.hobbyone.HashDroid))验证文件完整性,确保未被篡改。 - 避免从非官方站点下载,以防止 APK 捆绑恶意代码[^1]。 #### 步骤 3: 安装 APK 文件 下载完成后,在 Android 设备上安装: 1. **启用未知来源安装**: - 进入 “设置” > “安全”(或 “隐私”)> 启用 “未知来源应用安装”。 - 如果提示,选择允许来自您的浏览器(如 Chrome)的安装。 2. **执行安装**: - 使用文件管理器打开下载目录。 - 点击下载APK 文件(如 “AndroidSystemWebView_93.apk”),按照屏幕提示完成安装。 3. **验证安装**: - 安装后,进入 “设置” > “应用” > 搜索 “Android System WebView”,确认版本号显示为 93.x。 - 如果安装失败,可能原因是设备架构(ARM64 或 x86)不匹配,请回 APKMirror 下载正确变体。 #### 注意事项 - **兼容性问题**:WebView 93 版本可能较旧(截至 2023年,最新版本已超过 110),请确认您的设备 Android 版本兼容(WebView 93 适配 Android 10 或更高)。如果设备预装更新版本,覆盖安装可能导致冲突。 - **安全风险**:手动安装系统组件可能影响系统稳定性,建议仅在官方更新不可用时尝试。如果用于开发测试,优先使用 Android Studio 的模拟器。 - **替代方法**:如果您是通过 WebView 应用访问下载链接(如引用[1]所述),可以在 `shouldOverrideUrlLoading` 方法中拦截 APK 链接并启动系统浏览器处理: ```java if (url.contains("/download/") && url.contains(".apk")) { view.stopLoading(); view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } ``` 这能确保下载任务由浏览器处理,而非 WebView 自身[^1]。同时,引用[2]提到 WebView 无法直接下载 APK,需自定义 DownloadListener,但您的需求是文件下载,而非应用内实现,因此上述步骤更直接有效[^2]。 如果您在下载过程中遇到问题(如链接失效),请提供更多细节(如设备型号和 Android 版本),我可以协助查找备用资源。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值