7

我想以编程方式发送彩信我使用了以下代码

    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);

问题是它指向撰写消息页面并需要手动发送短信,我不想在没有任何通知的情况下发送它应该发送我该怎么做?

有人请分享我的答案

4

3 回答 3

9

我终于找到了一个 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);

你可以得到类似的东西(在 Android 上以编程方式设置 APN - vincent091 的回答):

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));
于 2013-12-16T12:47:21.090 回答
2

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

于 2013-09-23T16:36:08.280 回答
0

通过这种方式,您可以直接发送短信,通过提供手机号和主题。并附加图像。

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);
于 2013-05-13T12:09:57.947 回答