发送彩信编程

问题描述:

我想以编程方式发送MMS我用下面的代码,它发送彩信编程

Intent sendIntent1 = new Intent(Intent.ACTION_SEND); 
    try { 

     sendIntent1.setType("text/x-vcard"); 
     sendIntent1.putExtra("address","0475223091"); 
     sendIntent1.putExtra("sms_body","hello.."); 
     sendIntent1.putExtra(Intent.EXTRA_STREAM, 
       Uri.parse(vcfFile.toURL().toString())); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    startActivity(sendIntent1); 

问题是,它引导到撰写邮件页面,需要手动发送短信,我不想这样,没有任何它应该发送的通知我该如何做?

有人请分享我的答案

我终于找到了一个能100%工作的解决方案。请参阅github项目https://github.com/klinker41/android-smsmms。 (任何人发现它有用,请捐赠给作者http://forum.xda-developers.com/showthread.php?t=2222703)。

通知书的,强制性的设置仅

Settings sendSettings = new Settings(); 

sendSettings.setMmsc(mmsc); 
sendSettings.setProxy(proxy); 
sendSettings.setPort(port); 

你可以让他们像(在Set APN programmatically on Android发现 - 通过vincent091 answear):

Cursor cursor = null; 
if (Utils.hasICS()){ 
    cursor =SqliteWrapper.query(activity, activity.getContentResolver(), 
      Uri.withAppendedPath(Carriers.CONTENT_URI, "current"), APN_PROJECTION, null, null, null); 
} else { 
    cursor = activity.getContentResolver().query(Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"), 
     null, null, null, null); 
} 

cursor.moveToLast(); 
String type = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.TYPE)); 
String mmsc = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.MMSC)); 
String proxy = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.MMSPROXY)); 
String port = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.MMSPORT)); 
+0

我得到这个 java.lang.IllegalArgumentException异常:空邮件URI。 你能帮忙吗? – user3530687 2017-02-24 05:16:45

通过这种方式,您可以直接彩信,通过给手机号码和Subject.And附加图像。

Uri uri = Uri.parse("file://"+Environment.getExternalStorageDirectory()+"/test.png"); 
     Intent i = new Intent(Intent.ACTION_SEND); 
     i.putExtra("address","1234567890"); 
     i.putExtra("sms_body","This is the text mms"); 
     i.putExtra(Intent.EXTRA_STREAM,"file:/"+uri); 
     i.setType("image/png"); 
     startActivity(i); 

MMS是Android中一个基于HTTP请求。 您必须拥有移动数据才能发送彩信。 Android没有公开API发送MMS,因为它们具有SMS的API。 如果你想要你的应用程序发送彩信,你将不得不写所有东西。 请参阅AOSP代码。 https://github.com/android/platform_packages_apps_mms 或者您可以简单地构建Intent,然后启动本地消息传递应用程序。