Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Send MMS programmatically

Tags:

android

mms

I want to send an MMS programmatically I used the following code for it

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

The problem is it directing to the compose message page and requires manually send the SMS and i dont want so without any notification it should send How can i do it??

SomeBody please share me the answer

like image 527
Geethu Avatar asked May 13 '13 09:05

Geethu


People also ask

How to send MMS in Android programmatically?

MMS is a HTTP based request in Android.You have to have mobile data to send an MMS. There are no APIs exposed by Android to send an MMS, as they have APIs for SMS. If you want your application to send MMS you will have to write everything. Please refer the AOSP code.

How do I send MMS pictures on android?

Select the + icon, then choose a recipient or open an existing message thread. Select the + icon to add an attachment. Tap the Camera icon to take a picture, or tap the Gallery icon to browse for a photo to attach. Add text if desired, then tap the MMS button to send your image with your text message.

What does MMS stand for?

MMS stands for Multimedia Messaging Service. Whenever you send a text with an attached file, like a picture, video, emoji, or a website link, you're sending an MMS. Play video.


1 Answers

I finally found a solution that works 100%. Please refer to github project https://github.com/klinker41/android-smsmms. (Anyone who find it usefull please donate to author http://forum.xda-developers.com/showthread.php?t=2222703).

Notice, that obligatory settings are only

Settings sendSettings = new Settings();

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

you can get them something like (found at Set APN programmatically on Android - answear by 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));
like image 98
Defuera Avatar answered Sep 22 '22 10:09

Defuera