web-dev-qa-db-ja.com

mailto:Androidでメールアプリを開かないリンク

これは私を夢中にさせます。私はIonicアプリ(Cordova、Angularなど)に取り組んでいます。mailto:hrefを含むお問い合わせリンクがあります。

href="mailto:[email protected]?subject=my%20App"

SOで削除する必要があると言っている無数の投稿を読みました

<access Origin="*"/>

プロジェクトルートのconfig.xmlから、次のものに置き換えます。

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

私がやったこと。 ionic buildを実行すると、platforms/Android/res/xmlのc​​onfig.xmlに追加されます。しかし、リンクを実行しても、Androidシミュレーターでメールアプリが開かれません(シミュレーターでメールが構成されている場合でも)。

悲しいことに、テストするデバイスがありません。これは単なるエミュレーターなのでしょうか、それとも何か不足していますか?

23
James J

cordovaプラグインホワイトリスト をインストールする必要があります。

cordova plugin add cordova-plugin-whitelist

または、config.xmlファイルへの参照を保存する場合:

cordova plugin add cordova-plugin-whitelist --save

また、インテントをconfig.xmlファイルに追加する必要があることを確認します。

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

より多くの情報を見つけることができます こちら

25
LeftyX

上記の回答と記事のおかげでこれを解決しました。上記の投稿以降、何が変わったのか、何が変わったのかはわかりませんが、他の人の参照のためです。 http://, https://, tel:, & mailto:は、 inappbrowser プラグインのみで動作し、config.xmlを手動で編集する必要はありません。上記のすべてを実行したが、まだ機能していなかったので、いじり始めたところ、window.open()呼び出しが正しく機能するために"_system"の2番目のパラメーターが必要であることがわかりました(ブラウザーを使用しようとしましたが、 http://mailto:xxx...フラグなしで"_system"に「移動」します)。

しかし、好奇心のために、ホワイトリストプラグインをアンインストールし、config.xmlの手動編集を削除しましたが、引き続き機能します。

ノート:

-試したすべてのバリエーションを覚えていませんが、onclickはIonic/Angular/Cordovaスコープにアクセスできなかったため、ng-clickを使用しました。

-href = "..."をオプションと一緒に使用したことはありませんでした。 (覚えている場合は、テストして結果を反映するように更新します。)

したがって、onlycordova-plugin-inappbrowserがインストールされ、noconfig .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 protected]', '_system')"

2016年9月20日のテスト:

HTC One M8、Android 6、cordova v6.3.1、cordova-plugin-inappbrowser v1.5.0、ionic v2.0.0、jdk1.8.0_101、= Android SDK 21、23、および24がインストールされている

5
Chaos7703

これを試して:

window.location.href = "mailto:[email protected]?subject=Works on iOS too";
4
catanore

今日これに走り込んだところ、mailtoリンクに影響を与えたが、telリンクには影響を与えなかったことがわかりました。

Daveの回答で説明されているように、インテントをcordova configに追加する

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

また、ページのcspヘッダーでmailtoリンクを許可する必要がありました

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

CSPヘッダーのこの動作に関するドキュメントは表示されませんでした。

3
Sarah Gallitz

「true」を「yes」に置き換えたらどうなりますか。これをアプリで使用すると動作します。

<access Origin="tel:*" launch-external="yes"/>
3
dave

変更 CordovaのWhiteListPlugin in config.xmlうまくいかなかった-<access >,`。上記を含む多くの組み合わせを試しました。これらが必ずしも機能しないということではなく、単に私のセットアップでは機能しません。 (ブラウザ、Android、およびiOS用のビルド)

ただし、 Cordova InAppBrowserプラグイン を使用すると動作しました:

上記のように、inAppBrowserプラグインを使用して、ターゲットを_systemに設定します。

これにより、iOSで発生していたunsupported url、およびネイティブシステムWebブラウザーを起動します(つまり、URL呼び出しを許可するためにWhiteListPluginに依存しません)。

お役に立てれば。

Cordovaバージョン6.3.1。

0
tkepa

Cordova WhiteList Plugin を使用するだけです。

それはこのように私のために働いた:in 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">
0
Nigidoz