Intereting Posts
Вызов метода перехвата Android – Как загрузить изображение и использовать его в качестве нового ресурса? Не удается изменить папку вывода по умолчанию Невозможно выполнить низкоуровневое декодирование видео на Android 4.2 без использования медиа-экстрактора Текущая активность андроида заканчивается закрытием приложения ButterKnife: Null взгляды после отдыха Фрагментов на ViewPager Можно ли ссылаться на другую строку в файле strings.xml? Почему ListView остается над TextView в диалоговом окне ListPreference? Фрагментные транзакции с переходом – Требуются уникальные имена перехода Как собирать информацию из IntentService и обновлять пользовательский интерфейс Android Поведение приложений Android VOIP в режиме «Доза» Android: SlidingDrawer исчезает под SurfaceView Что такое onCreate (Bundle savedInstanceState) Загрузка / переопределение пользовательских классов для Android-классов Как тестировать модуль

Mailto: ссылки, не открывающие приложение для почты на Android в приложении cordova

Это сводит меня с ума. Я работаю над ионическим приложением (Cordova, Angular и т. Д.). У меня есть контактная ссылка, которая содержит mailto: href

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

Я читал бесчисленные сообщения на SO, которые говорят, что вам нужно удалить

 <access origin="*"/> 

Из config.xml в корне проекта и замените его на:

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

Что я сделал. Когда я запускаю ionic build она добавляется в файл config.xml в platforms/android/res/xml . Но независимо от того, что я делаю, ссылка не открывает почтовое приложение на любом Android-симуляторе (даже если электронная почта настроена в симуляторе).

К сожалению, у меня нет устройства для тестирования – так это всего лишь вещь эмулятора или я что-то упускаю?

Solutions Collecting From Web of "Mailto: ссылки, не открывающие приложение для почты на Android в приложении cordova"

Вы должны установить белый список плагинов cordova :

 cordova plugin add cordova-plugin-whitelist 

Или если вы хотите сохранить ссылку на файл config.xml :

 cordova plugin add cordova-plugin-whitelist --save 

И что вы должны добавить намерение в свой файл config.xml :

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

Вы можете найти больше информации здесь .

Что, если вы замените «true» на «yes» … Я использую это в своем приложении, и это работает.

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

Начнём на это сегодня и заметив что-то, что затронуло mailto, но не tel, ссылки:

В дополнение к добавлению намерения в конфигурацию кордовы, как описано в ответе Дэйва

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

Мне также пришлось разрешать ссылки mailto в заголовке csp моей страницы

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

Не видел никакой документации вокруг этого поведения заголовков CSP.

Я просто решил это благодаря ответам и статьям выше. Я не уверен, что было или не изменилось со времени вышеупомянутых сообщений, но для ссылок других; У меня теперь есть http://, https://, tel:, & mailto: работает только с плагином inappbrowser, и никаких ручных изменений в config.xml не требуется. Я сделал все, что упоминалось выше, и он все еще не работал, поэтому я начал заниматься игрой и обнаружил, что для вызова window.open() требуется, чтобы второй параметр "_system" работал правильно (он пытался использовать браузер и «перемещаться», К http://mailto:xxx... без флага "_system" ).

Однако, ради любопытства, я удалил плагин с белым списком и удалил ручные изменения в файле config.xml, и он все еще работает.

Заметки:

-Я не помню всех вариаций, которые я пробовал, но onclick не смог получить доступ к Ionic / Angular / Cordova scope (s), поэтому я застрял в ng-click.

-Я не пытался / не пытался использовать href = "…" с любым из вариантов. (Если я помню, я буду проверять их и обновлять, чтобы отобразить мои результаты.)

Таким образом, только с установленным кордовым плагином-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 SDK 21, 23 и 24 установлены

Изменение версии WhiteListPlugin от Cordova в файле config.xml не сработало для меня – <access >, `. Я пробовал много комбинаций, в том числе выше. Не означает, что они не будут работать обязательно, только для моей настройки это не так. (Для браузера, Android и iOS)

Однако, используя плагин Cordova InAppBrowser, работал:

Как упоминалось выше, используйте плагин inAppBrowser и установите цель в _system.

Это передает проблемы, которые я видел в iOS с unsupported url , и запускает собственный веб-браузер собственных систем (т. Е. Не полагается на WhiteListPlugin, чтобы разрешить вызов URL-адреса).

Надеюсь это поможет.

Кордова версия 6.3.1.