[英]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.