Как отправить письмо со ссылкой для открытия приложения Android - PullRequest
9 голосов
/ 18 апреля 2011

Я создал некоторый код, который отправляет html-письмо на указанный адрес. Письмо содержит ссылку, подобную следующей:

<a href="crystalcloud://android?4567">Click to validate account</a>

Я проверял это, отправив его на мою учетную запись gmail. По какой-то причине, когда я получаю электронное письмо, оно не позволяет мне перейти по ссылке. Если я добавлю эту ссылку на веб-страницу, мое приложение запустится нормально.

Есть ли что-то особенное, что я должен сделать, чтобы эта ссылка отображалась в электронном письме, или gmail просто блокирует подобные ссылки? Есть ли способ обойти эту проблему в Gmail?

РЕДАКТИРОВАТЬ: Добавлены фрагменты моего кода

Код для отправки ссылки:

    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailAddress));
    message.setSubject("New Crystal Cloud User");
    message.setContent("Thank you for creating a new Crystal Cloud account!<br><a href=\"crystalcloud://android?4567">Click to validate account</a>", "text/html; charset=utf-8");
    Transport transport = session.getTransport("smtp");
    transport.connect(host, from, pass);
    transport.sendMessage(message, message.getAllRecipients());
    transport.close();

Код Android для ответа на намерение:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="crystalcloud" />
        </intent-filter>

Ответы [ 3 ]

15 голосов
/ 18 апреля 2011

Это проблема с почтовыми клиентами Android, которые не показывают ссылки как кликабельные, если они не являются http или https.

Мое решение состояло в том, чтобы использовать http-схему, чтобы открыть мое приложение:

<data android:scheme="http" android:host="com.company.app" android:port="3513" />

Это работает, но раздражает, потому что предлагает пользователю открыть приложение либо в браузере, либо в вашем приложении. Другое решение состоит в том, чтобы иметь ссылку на веб-сайт, который затем перенаправляет JavaScript в ваше приложение, хотя это может вызвать больше проблем.

0 голосов
/ 23 ноября 2016

Я столкнулся с той же проблемой, наконец, я получил решение. Вы можете поделиться текстом, а также ссылку

  String link_val = "http://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName();
        String body = "<a href=\"" + link_val + "\">" + link_val + "</a>";
        String data = "Hello I am using this App.\nIt has large numbers of Words meaning with synonyms.\nIts works offline very smoothly.\n\n" + body;
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(data));
0 голосов
/ 18 апреля 2011

В заголовке вашего письма введите Content-Type: text/html, чтобы указать, что контент представлен в формате HTML, чтобы указать, что письмо приходит в формате HTML.Тогда почтовый клиент будет правильно отображать HTML.Это также поможет заключить ссылку в блок <html></html>.

...