• Stars
    star
    676
  • Rank 66,790 (Top 2 %)
  • Language
    Java
  • Created about 11 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Library for easily sending SMS and MMS for Android devices

Android SMS/MMS Sending Library

Promo

These are the APIs that Google has so far left out of the Android ecosystem for easily sending any type of message without digging through source code and what not.

If you've got a better way to do things, send me a pull request! The library was created specifically for Sliding Messaging Pro and EvolveSMS and some things work the way they do specifically for those apps.

It's now used in Pulse as well.


Library Overview

Sending messages is very easy to do.

First, create a settings object with all of your required information for what you want to do. If you don't set something, then it will just be set to a default and that feature may not work. For example, if you need MMS, set the MMSC, proxy, and port, or else you will get an error every time.

Settings sendSettings = new Settings();

Next, attach that settings object to the sender

Transaction sendTransaction = new Transaction(mContext, sendSettings);

Now, create the Message you want to send

Message mMessage = new Message(textToSend, addressToSendTo);
mMessage.setImage(mBitmap);   // not necessary for voice or sms messages

And then all you have to do is send the message

sendTransaction.sendNewMessage(message, threadId)

Note: threadId can be nullified (using Transaction.NO_THREAD_ID), but this sometimes results in a new thread being created instead of the message being added to an existing thread

If you want to send MMS messages, be sure to add this to your manifest:

<service android:name="com.android.mms.transaction.TransactionService"/>

That's it, you're done sending :)

You'll also need to register a few receivers for when the messages have been sent and for delivery reports to mark them as read... In your manifest, add these lines:

<receiver
    android:name="com.klinker.android.send_message.SentReceiver"
    android:taskAffinity="[insert package name here].SMS_SENT"/>

<receiver
    android:name="com.klinker.android.send_message.DeliveredReceiver"
    android:taskAffinity="[insert package name here].SMS_DELIVERED"/>

<!-- Your custom receiver which is child of com.klinker.android.send_message.MmsSentReceiver -->
<receiver
    android:name="[insert your custom receiver here. eg. com.example.sms_mms.receivers.MyMmsSentReceiver]"
    android:taskAffinity="com.klinker.android.messaging.MMS_SENT"/>

Be sure to replace the [insert package name here] with your package name defined in the manifest. For example, Sliding Messaging's is com.klinker.android.messaging_donate.

Lastly, you'll need to include permissions in your manifest depending on what you want to do. Here are all of them (there are a lot unfortunately):

<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.provider.Telephony.SMS_RECEIVED" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

Using on Lollipop+ devices

If you are using this on devices with Android 5.0 or higher, then a simpler method of sending is available.

Settings settings = new Settings();
settings.setUseSystemSending(true);
Transaction transaction = new Transaction(mContext, settings);
Message message = new Message(textToSend, addressToSendTo);
message.setImage(mBitmap);
transaction.sendNewMessage(message, threadId)

This will invoke the MMS APIs that were made available in SDK 21. It is recommended over the old approach since you no longer need to ask the user for APNs and much less setup is necessary. The option will only be applied when the device has SDK 21 or higher, otherwise it will fall back to the old method.

For full details on how to implement, please check out the sample application. It has more information on permissions, creating a transaction and sending a message.


Dependencies Information

To include in your gradle project:

compile 'com.klinkerapps:android-smsmms:5.2.6'

License

Copyright 2017 Jacob Klinker

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

android-slidingactivity

Android library which allows you to swipe down from an activity to close it.
Java
1,275
star
2

android-chips

Chips in your AutoCompleteTextView on Android
Java
630
star
3

article-android

Android library for displaying web articles in a readable format
Java
153
star
4

android-dreamscene

Android TV app for displaying 4k images as the screensaver
Java
40
star
5

Android-ActionButton

A simple library to create a toast like button in the bottom right corner of your app's activity
Java
35
star
6

alarm-clock

Google's DeskClock from Android 4.4 KitKat with compatibility back to ICS
Java
33
star
7

tunes-for-tv

Spotify app for Android TV
Java
21
star
8

evolve_theme

Example theme for EvolveSMS
15
star
9

android-logger

Simple logger library that will log messages along with writing them to a file for easy access
Java
7
star
10

datetimepicker

fork of Google's datetimepicker with black theme added
Java
7
star
11

evolve_material

Material Themes for EvolveSMS
Groovy
6
star
12

android-realm-performance

A performance test for Realm databases in Android.
Groovy
6
star
13

EvolveSMS-Tutorial

Simple example of the opening tutorial bubbles shown on top of the current activity as shown on first start in EvolveSMS
Java
5
star
14

pushbullet-arduino

Arduino Pushbullet Client
C++
5
star
15

en-wearable-ble-gatt-speed

Utility for testing GATT transfer speeds for large amounts of data.
Java
5
star
16

theme-spotlight

Theme Spotlight app to find all of the coolest EvolveSMS and Talon for Twitter themes!
Java
5
star
17

evolve_ios_theme

Theme for EvolveSMS
Groovy
3
star
18

Evolve-Blue

Blue theme for EvolveSMS
Groovy
1
star
19

Robolectric-AppCompat-Example

Groovy
1
star
20

ee-design-website

Website for Principles of Electrical Engineering Design
JavaScript
1
star
21

Evolve-Classic-Blue

A classic blue and white theme for EvolveSMS
Groovy
1
star
22

Evolve-Hangouts

A hangouts theme for EvolveSMS
Groovy
1
star