【问题标题】:Make Mail screen Text Field Editable false in android在android中使邮件屏幕文本字段可编辑为false
【发布时间】:2014-02-18 06:12:13
【问题描述】:

你好朋友,当我通过我的应用程序发送邮件时,我想在所有编辑文本中将可编辑设置为 false
以编程方式

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto","test@mymail.com, null));

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "My Subject");

emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Message);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
finish();

朋友们,我的问题是我想要文本主题字段和文本/正文字段只读用户不能编辑它的值,所以我怎样才能使它成为任何 idae?

【问题讨论】:

  • 你想在选择器email屏幕中将正文设置为只读吗?
  • 我认为这很困难,因为您要控制其他应用程序...
  • 这可能是不可能的,因为您无法控制电子邮件选择器。所以基本上你不能这样做。
  • @user3110424 :那么还有什么其他方式可以在我的应用程序中自动发送邮件吗?

标签: android email android-intent gmail


【解决方案1】:

您将意图传递给 android 设备以处理邮件功能,指定在传递意图后处理它,一旦他们处理并获取您的主题数据并向您发送消息,它将由 gmail 或安装在您手机中的任何其他电子邮件客户端处理应用程序将处于暂停状态我的意思是说您无法控制处理您数据的其他应用程序。

创建您的邮件处理和发送邮件,而不是将其作为意图传递

set editable false 仅当您的应用程序中有这些编辑字段而不是由您的意图启动的其他活动时才有效

【讨论】:

    【解决方案2】:

    您可以创建自己的电子邮件发送活动,而无需将意图传递给任何本机电子邮件客户端应用程序。您可以轻松地禁用消息和主题的 editText。发送邮件的代码是:

    public class SendMail{
    
        public static void main(String[] args) {
    
            final String username = "username@gmail.com";
            final String password = "password";
    
            Properties props = new Properties();
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.port", "587");
    
            Session session = Session.getInstance(props,
              new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
              });
    
            try {
    
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress("from-email@gmail.com"));
                message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse("to-email@gmail.com"));
                message.setSubject("Testing Subject");
                message.setText("Dear Mail Crawler,"
                    + "\n\n No spam to my email, please!");
    
                Transport.send(message);
    
                System.out.println("Done");
    
            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }
        }
    }
    

    取自here

    【讨论】:

      【解决方案3】:

      基本上,如果您选择 android 的电子邮件选择器来发送电子邮件,您将失去对此意图的所有控制。因此,覆盖这些行为非常困难,而且可能是不可能的。所以克服这个问题你可以点击这个链接Sending Email in Android using JavaMail API without using the default/built-in app

      您可以在上面的链接中找到如何使用 javamail Api。

      现在您可以为邮件活动创建自己的layout。你可以使用

      youreditetxtWhichyouwanttodisable.setEditable(false);

      这可能有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-12
        • 2011-02-03
        • 2019-11-02
        • 2011-05-26
        • 2021-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多