使用Intent将消息发送到多个号码

时间:2013-10-03 10:54:27

标签: android android-intent

嗨,我有一个数字列表。

ArrayList<String> numbers;

我想使用Intent一起向所有这些号码发送消息。 我这样做是通过电子邮件向多人发送电子邮件,如何处理邮件?

public static void send(Context ctx, String[] addy, String subject,
        String body,File attachment) {
    try {
        Intent sendIntent = new Intent(Intent.ACTION_VIEW);
        sendIntent.setType("vnd.android-dir/mms-sms");
        sendIntent.putExtra(android.content.Intent.EXTRA_PHONE_NUMBER,
                addy);
        sendIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
        sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);
        //sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachment));
        ctx.startActivity(Intent.createChooser(sendIntent,
                "Send via which Application?"));
    } catch (Exception e) {
        Toast.makeText(ctx, "No activity was found to handle this action",
                Toast.LENGTH_SHORT).show();
    }
}

这是打开消息应用程序,但存储在addy中的数字未列在发送到列

的消息中

2 个答案:

答案 0 :(得分:1)

  

我通过电子邮件发送此邮件,例如向多人发送电子邮件

假设您通过Intent操作使用了第三方应用程序,这是否有效取决于第三方应用程序的作者。您无法知道数百个Android支持的电子邮件应用程序是否支持指定多个地址,除非您对它们进行全部测试。

  

如何处理留言?

你一次发送一个。

您的代码非常糟糕,使用未记录的MIME类型,但不一定会在所有设备上使用,但EXTRA_PHONE_NUMBER应该是String,而不是String[]

ACTION_SEND或带有ACTION_SENDTO地址的smsto:同样只能保证支持一个号码,并且会给您带来与以这种方式发送电子邮件相同的问题。

SmsManager有直接发送短信的方法;他们一次也只支持一个电​​话号码。

答案 1 :(得分:0)

供Java开发人员使用

public static void send(Context ctx, String[] address, String subject,
                        String body, File attachment) {

    List<String> mylist = Arrays.asList(address);
    Intent sendIntent = new Intent(Intent.ACTION_VIEW);

    StringJoiner sj = new StringJoiner(";", "smsto:", "");
    mylist.forEach(sj::add);
    sendIntent.setData(Uri.parse(sj.toString()));

    sendIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
    sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);

    if(sendIntent.resolveActivity(ctx.getPackageManager()) != null) {
        ctx.startActivity(sendIntent);
    }
}

对于那些使用kotlin的人,请使用

fun send(ctx: Context, address: Array<String>, subject: String, body: String, attachment: File) {

    val sendIntent = Intent(Intent.ACTION_VIEW)

    val data = address.toList().joinToString(";", "smsto:")

    sendIntent.data = Uri.parse(data)
    sendIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject)
    sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, body)

    if(sendIntent.resolveActivity(ctx.packageManager) != null) {
        ctx.startActivity(sendIntent)
    }
}