app实现外部浏览器打开链接

需求:安卓和IOS开发的混合app。前端使用vue,vant2,安卓使用java,ios使用的object-c。实现效果:点击按钮,下载PDF附件,app跳转到手机外部浏览器,下载附件......

1,安卓端代码:

复制代码
public static void openPDFInBrowser(Context context, String url) {
        Uri uri = Uri.parse(url);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
        try {
            context.startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Log.w("error", "Activity was not found for intent, " + intent.toString());
        }
    }
复制代码

2,IOS端代码:

复制代码
[[UIApplication sharedApplication]openURL:URL options:@{} completionHandler:^(BOOL success) {
 
}];
 
函数异步执行,在主队列中调用 completionHandler 中的回调。
参数:
openURL:打开的网址
options:用来校验url和applicationConfigure是否配置正确,是否可用。
        如果校验为不可用,completionHandler的回调success为NO。
        唯一可用@{UIApplicationOpenURLOptionUniversalLinksOnly:@YES}。
        不需要就用@{}为置空,不能直接置nil。
        置空将不会校验,completionHandler的回调success恒为YES。
ompletionHandler:如不需要可置nil
复制代码

 

3,前端代码使用桥接:

复制代码
 _download(){
      const that = this;
      const {voucherNo,unionid,custId} = this;
      const baseUrl = config.BASE_API;
      const url = `/api/wx/down/voucherDetailByB001?voucherId=${voucherNo}&unionId=${unionid}`;
      const downUrl = baseUrl + url;
      this.isLoading = true;
      this.loadingText = "下载中";
      this.$JQAPI('saveFile', {
        param: {url: downUrl, suffix: 'pdf' },
        successCallBack: function (res) {
          that.isLoading = false;
          const result = JSON.parse(res);
          console.log(result);
          if (result && result.code == 200) {
            const data = result.data;
            console.log(data);
            Toast({message:`文件已保存至${data}文件夹`,position: 'bottom',duration: 5000});      
          } else {
            that.$toast(result.msg);
          }
        },
        failedCallBack: function (err) {
          console.log(err)
          that.$toast(err);
          that.isLoading = false;
        }
      });
复制代码

 注意:后端代码返回流,不能设置content-type:application/x-msdownload,否则IOS下载的附件会带上.exe

posted @   未尝一死  阅读(642)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示