app實現外部瀏覽器打開鏈接

来源:https://www.cnblogs.com/skrr/archive/2023/02/17/17130778.html
-Advertisement-
Play Games

需求:安卓和IOS開發的混合app。前端使用vue,vant2,安卓使用java,ios使用的object-c。實現效果:點擊按鈕,下載PDF附件,app跳轉到手機外部瀏覽器,下載附件...... 1,安卓端代碼: public static void openPDFInBrowser(Contex ...


需求:安卓和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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 01.什麼是實時操作系統(RTOS)? 實時操作系統 (Real-Time Operating System,RTOS) 是一種為實時應用程式提供服務的操作系統,該類操作系統能快速響應並處理數據,處理時間要求以0.1秒的精度進行增量,處理結果能夠在規定的時間之內控制生產過程或對處理系統做出快速響應, ...
  • 1.MQTT服務安裝 下載EMQX做MQTT代理伺服器 https://www.emqx.cn/downloads/broker/v4.2.7/emqx-centos7-4.2.7-x86_64.zip 解壓安裝即可 啟動MQTT伺服器 在emqx/bin目錄下 2、啟動 EMQX(兩種啟動方式:e ...
  • docker 最近迷戀使用doker容器,在docker容器進行部署MySQL,以前針對容器的安全性一直存在懷疑的態度,不過如果能夠通過容器也能資料庫備份問題,就這樣開始docker容器備份 備份和恢復: 第一種方式 #全部備份 [root@localhost home]# docker exec ...
  • 【講故事】 近端時間一直在做一些資料庫查詢的工作,主要是根據表中的“日期”與“產品名”兩個欄位為條件在對錶進行相關查詢。 但當表數據量達到3000萬以上時,發現查詢速度呈幾何級下降,變得超慢不說,而且每查詢一次,伺服器記憶體的使用量就一點點上升直至占用100%,我就不得不重啟伺服器... :( 這時, ...
  • 新的一年我們加緊了更新迭代的速度,增加了數據湖平臺EasyLake和大數據基礎平臺EasyMR,超40項功能升級優化。我們將繼續保持產品升級節奏,滿足不同行業用戶的更多需求,為用戶帶來極致的產品使用體驗。 以下為袋鼠雲產品功能更新報告第四期內容,更多探索,請繼續閱讀。 數據湖平臺 1.【元數據管理】 ...
  • 1.首先我們需要兩台伺服器,安裝好mysql(版本為8) 2.修改主伺服器mysql資料庫配置文件 vim /etc/my.cnf [mysql] log-bin=mysql-bin //啟動二進位日誌 server-id=100 //伺服器唯一ID 退出保存以後重啟mysql服務:systemct ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者:飛魚過天 文章來源:GreatSQL社區原創 問題 原因 故障解決方案 復現步驟 參考文獻 一、問題: MySQL5.7.38主從架構,主節點唯一 ...
  • ETL 系統核心特征 數據重跑及其優化 重跑的場景 | 場景 | 導致原因 | 影響 | | | | | | kafka consumer poll消息失敗 | 1. 網路問題;2. kafka broker 磁碟壞道,拉取消息一直失敗或其他 kafka 原因 | 導致一個或多個topic&part ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...