簡體   English   中英

mailto:鏈接無法在cordova應用程序中在Android上打開郵件應用程序

[英]mailto: links not opening mail app on Android in cordova app

這真讓我抓狂。 我正在研究Ionic應用程序(Cordova,Angular等)。 我有一個聯系我們鏈接,其中包含mailto:href

href="mailto:info@somedomain.net?subject=my%20App"

我已經閱讀了無數帖子,說你必須刪除

<access origin="*"/>

從項目根目錄中的config.xml中替換它:

<access origin="mailto:*" launch-external="true" />

我做過的。 當我運行ionic build它會被添加到platforms/android/res/xml的config.xml中。 但無論我做什么,鏈接都不會在任何Android模擬器上打開郵件應用程序(即使在模擬器中配置了電子郵件)。

可悲的是,我沒有可以測試的設備 - 所以這只是一個模擬器的事情還是我錯過了什么?

您必須安裝cordova插件白名單

cordova plugin add cordova-plugin-whitelist

或者如果要保存對config.xml文件的引用:

cordova plugin add cordova-plugin-whitelist --save

並且您必須將意圖添加到config.xml文件:

<allow-intent href="mailto:*" />

你可以在這里找到更多信息。

我剛剛解決了這個問題,感謝上面的回復和文章。 我不確定自上述帖子以來有什么變化或沒有變化,但供其他人參考; 我現在有http://, https://, tel:, & mailto:只安裝了inappbrowser插件,不需要手動編輯config.xml。 我做了上面提到的所有事情但它仍然沒有工作,所以我開始擺弄,發現我window.open()調用需要"_system"的第二個參數才能正常工作(它試圖使用瀏覽器和“導航”到http://mailto:xxx...沒有"_system"標志。

但是,出於好奇的原因,我卸載了白名單插件並刪除了config.xml中的手動編輯,它仍然有效。

筆記:

- 我不記得我嘗試過的所有變化,但onclick無法訪問Ionic / Angular / Cordova示波器,因此我堅持使用ng-click。

- 我沒有/沒有嘗試使用任何選項的href =“...”。 (如果我記得,我會測試它們並更新它以反映我的結果。)

因此, 安裝了cordova-plugin-inappbrowser並且沒有編輯config.xml,這是我的工作/測試解決方案:

ng-click="window.open('http://somesite.com', '_system')"
ng-click="window.open('https://google.com', '_system')"
ng-click="window.open('tel:(123) 345-4567')"
ng-click="window.open('mailto:email@example.com', '_system')"

測試9/20/2016使用:

HTC One M8,android 6,cordova v6.3.1,cordova-plugin-inappbrowser v1.5.0,ionic v2.0.0,jdk1.8.0_101,android SDKs 21,23和24已安裝

嘗試這個:

window.location.href = "mailto:your@ema.il?subject=Works on iOS too";

如果用“是”替換“true”怎么辦...我在我的應用程序中使用它並且它有效。

<access origin="tel:*" launch-external="yes"/>

今天進入這個並注意到一些影響mailto但不影響tel的鏈接:

除了像dave的答案所描述的那樣將意圖添加到cordova配置中

<allow-intent href="mailto:*" />

我還必須在我的頁面的csp標題中允許mailto鏈接

<meta http-equiv="Content-Security-Policy" content="default-src 'self' mailto:*">

沒有看到有關CSP標頭的此行為的任何文檔。

config.xml改變Cordova的WhiteListPlugin對我來說不起作用 - <access >, `。 我嘗試了很多組合,包括上面那些組合。 並不意味着這些不會起作用,只是因為我的設置它沒有。 (適用於瀏覽器,Android和iOS的構建)

但是,使用Cordova InAppBrowser插件工作:

如上所述,使用inAppBrowser插件並將目標設置為_system。

這通過我在iOS中看到的問題通過unsupported url ,並啟動本機系統Web瀏覽器(即,不依賴於WhiteListPlugin來允許URL調用)。

希望這可以幫助。

Cordova版本6.3.1。

除了使用Cordova的WhiteListPlugin之外 ;

它以這種方式為我工作: 在config.xml中

<access origin="*"/>
<access origin="mailto:*" launch-external="true" />
<allow-intent href="mailto:*" launch-external="yes"/>

特別為ios添加:

<platform name="ios">
    <allow-navigation href="mailto:*" launch-external="yes"/>    
    ...
 <platform name="ios">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM