2

我的要求是我必须直接(没有应用程序选择器)从我的应用程序中打开带有 to、body 和 vcf 附件的消息默认 android 屏幕。我正在使用以下两种方法(方法)。但在第一种方法中,附件即将到来,但首先出现多个应用程序选择器屏幕,然后我必须选择消息应用程序。

在第二种方法中,默认消息传递应用程序正在打开,但附件 (.vcf) 文件未出现。请指教。下面是代码。

方法一:

public static void sendMMS(Context ctx,String firstname,String send_to,String body,String vcard)
    {

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setType("text/x-vcard");
        sendIntent.putExtra("address", send_to);
        sendIntent.putExtra("sms_body", body);

      File file1 = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),firstname+".vcf");
        sendIntent.putExtra(Intent.EXTRA_STREAM,
                Uri.fromFile(file1));
        ((Activity) ctx).startActivity(sendIntent);
    }

方法二:

private void sendMMS()
{
    Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
    smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
    smsIntent.setType("vnd.android-dir/mms-sms");
     File file1 = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),"file.vcf");
     smsIntent.putExtra(Intent.EXTRA_STREAM,
                Uri.fromFile(file1));
    smsIntent.setData(Uri.parse("sms:" + "XXXXXXXXXXX")); 
    startActivity(smsIntent);
}
4

1 回答 1

0

我最终得到了解决方案,如下所示。主要问题是 1. 在 Intent 中添加 ClassName 和 2. 使用从 file:// 开始的文件路径并将其放入 Uri.parse()

Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
        sendIntent.putExtra("sms_body", body); 
        sendIntent.putExtra("address", send_to);
        sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/Test.vcf"));
        sendIntent.setType("text/x-vcard");
        startActivity(sendIntent);
于 2013-05-04T11:16:23.180 回答