Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何发送带有链接的电子邮件以打开Android应用程序_Java_Android_Gmail_Android Intent - Fatal编程技术网

Java 如何发送带有链接的电子邮件以打开Android应用程序

Java 如何发送带有链接的电子邮件以打开Android应用程序,java,android,gmail,android-intent,Java,Android,Gmail,Android Intent,我创建了一些代码,将html电子邮件发送到给定的地址。该电子邮件包含如下链接: <a href="crystalcloud://android?4567">Click to validate account</a> 我通过把它发送到我的gmail帐户来测试它。由于某种原因,当我收到电子邮件时,它不会让我点击链接。如果我把这个链接放在一个网页上,我的应用程序就会正常启动 我需要做些什么才能让这个链接出现在电子邮件中,还是gmail阻止了这些链接?在gmail中有没有解

我创建了一些代码,将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();
MimeMessage message=新MimeMessage(会话);
message.setFrom(新的InternetAddress(from));
message.addRecipient(message.RecipientType.TO,新的InternetAddress(emailAddress));
message.setSubject(“新的水晶云用户”);
message.setContent(“感谢您创建新的Crystal Cloud帐户!
”,“text/html;charset=utf-8”); 传输=session.getTransport(“smtp”); 传输。连接(主机、发件人、通行证); 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>


在邮件标题中放入
内容类型:text/html
以指示内容是html格式的,以指示邮件是html格式的。然后,邮件客户端将适当地呈现HTML。将链接包含在
块中也会有帮助。

这是android电子邮件客户端的一个问题,除非链接是http或https,否则它们不会显示为可单击的链接

我的解决方案是使用http方案打开我的应用程序:

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

这样做很有效,但很烦人,因为它会提示用户在浏览器或应用程序中打开应用程序。
另一个解决方案是在一个网站上建立一个链接,然后将javascript重定向到你的应用程序,尽管这可能会导致更多问题。

我最终也遇到了同样的问题。您可以共享文本和链接

  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));
字符串链接\u val=”http://play.google.com/store/apps/details?id=“+MainActivity.this.getPackageName();
字符串体=”;
String data=“您好,我正在使用此应用程序。\n它有大量的同义词。\n它脱机工作非常顺利。\n\n”+body;
sharingint.putExtra(android.content.Intent.EXTRA_TEXT,Html.fromHtml(数据));

我已经这么做了。html被正确发送,但它似乎阻止了这种类型的链接。有什么想法吗?这只发生在Gmail上吗?你试过其他邮件客户端吗?如果只是Gmail,那可能是因为它的钓鱼过滤器。我想我会这么做,生活在烦恼中。它在安卓6和更高版本上工作吗?我尝试过类似的东西,它适用于android 4.3,但在6和7上不起作用:|它会起作用,因为我使用了相同的代码,你可以尝试它。我尝试过,但没有。从S3mini我在我的电子邮件中得到链接,从Nexus5和6以及LG G5和7我只得到文本,没有超链接。我试过输入:“text/html”和“message/rfc822”有什么想法吗?为什么?