oksigenia_sms · SMS plugin for Flutter
Open sourceMobileLong SMS on Android, with a single permission
On Android 12 and later, splitting a long SMS the standard way requires reading the phone state. oksigenia_sms splits the message itself and sends it with SEND_SMS alone; it is the SMS engine inside Oksigenia SOS.
Minimal use: split a long SMS and send it as a single one
cat lib/main.dart
// Emulator number (not a real phone). AVD 5554 sends to 5556.
const String to = '5556';
…
final r = await OksigeniaSms.send(to: to, message: msg);
Run on an Android emulator, granting only the SEND_SMS permission
adb shell pm grant com.oksigenia.oksms_demo android.permission.SEND_SMS
flutter run -d emulator-5554
Launching lib/main.dart on sdk gphone64 x86 64 in debug mode...
Running Gradle task 'assembleDebug'... 56.7s
…
I/flutter ( 2973): to : 5556
I/flutter ( 2973): message : 167 chars
I/flutter ( 2973): result : OksigeniaSmsResult(sent, 2/2 parts)
A multipart SMS with only the SEND_SMS permission, never touching phone identity
Who it is for
- Safety and emergency apps
- Privacy-first apps
- Hardened Android and GrapheneOS
- Field work and IoT
What it does
SEND_SMS only
The whole message goes out without asking for READ_PHONE_STATE.
Encoding-aware splitting
GSM-7 and UCS-2, without breaking words.
Confirmed delivery
A result for every segment of the message.
Stock and hardened Android
Tested on Android 12 to 17 and on GrapheneOS, with no Google Play Services.
1
permission (SEND_SMS)
2
encodings (GSM-7 and UCS-2)
12–17
Android versions tested
Standard
- Minimal permissions
- No Google Play Services
- Open source (Apache 2.0)
Pricing
Free · open source
Licence: Apache 2.0