全栈工程师_java全栈工程师_全栈开发者学习经验总结

  • 首页
  • 开发工具
    • 软件安装
    • 软件使用
  • 前端
    • Ionic
    • Android
    • Capacitor
    • Angular
    • Vue
    • 苹果开发者账号
  • 后端
    • Java
    • Python
    • MyBatis
    • Spring
    • SpringBoot
    • SpringMVC
    • SpringCloud
  • 服务器
    • Linux
    • MySQL
    • Nginx
    • Tomcat
    • Docker
  • 其他
    • 生活碎片
    • 报错专区
  • 我
lipsuper
专注产出高质量原创手打文章
  1. 首页
  2. 前端
  3. Ionic
  4. 正文

Cordova大坑,在InAppBrowser中成功实现下载功能-一个全栈工程师踩过的那些坑

2020年8月22日 392点热度 1人点赞 0条评论

由于业务的需要,我的app需要实现在APP内打开外部链接,这个功能可以通过Cordova提供的InAppBrowser插件轻松的实现。但是我还需要实现在InAppBrowser打开的外部页面中实现点击一个按钮,然后下载文件的功能。经过实践,InAppBrowser是不支持下载功能的,这可难倒我了。全栈工程师的成长之路漫漫,必然是从无数的坑里面跌倒又爬起来,才能一步一步成长。

不过经过辛苦的搜索,终于还是在网上找到了解决的方法:https://stackoverrun.com/cn/q/6932162

不过这哥们写得让人也不太好理解,经过多番尝试,我最终还是成功实现了。接下来就用中文更清晰的解释该怎样处理。

如果你用的是Cordova而不是用的Capacitor,那你就在你的开发工具中找到项目里面的这个文件夹:platforms\android\src\org\apache\cordova\inappbrowser

如果你跟我一样用了Capacitor的话,就直接找到android\capacitor-cordova-android-plugins\src\main\java\org\apache\cordova\inappbrowser这个文件夹。

然后打开InAppBrowser.java这个文件。使用搜索功能,搜索一个名字为navigate的方法,然后把下面的代码片段拷贝到这个方法里面:

this.inAppWebView.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));
                         cordova.getActivity().startActivity(i);
                       }
                   });

具体需要拷贝到什么位置呢?看下图:

inappbrowser中实现下载文件第一步

 

然后,同样是上面那段代码还需要拷贝到一个地方,此时先搜索方法名为run的方法,搜出来有好多个,找到如下这个:

inappbrowser实现下载文件第二步

然后这个方法特别长,你要往下拉,大概拉到这个位置:

inappbrowser实现下载文件第三步

大约1058行吧,这个行数可能会因为版本不同而不同,然后你把上面那段代码粘贴到跟我一样的位置就行了。

然后重新构建你的项目,然后打开Android Studio这时候你运行项目的话会发现报错了。

那是因为我们改变了代码,没有自动引入DownloadListener,找到报错的地方使用Alt+Enter自动引入一下就行了。

然后运行项目就没有问题了。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 踩坑
最后更新:2020年8月22日

lipsuper

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2021 lipsuper.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2021004735号-1

渝公网安备 50011202502306号