Top Related Projects
An open-source keyboard for Android which respects your privacy. Currently in early-beta.
A private messenger for Android.
A Matrix collaboration client for Android.
Email-based instant messaging for Android.
Thunderbird for Android – Open Source Email App for Android (fka K-9 Mail)
Proton Mail Android app
Quick Overview
QKSMS is an open-source, feature-rich SMS and MMS messaging application for Android. It offers a clean, modern interface with customizable themes and a focus on privacy and user experience.
Pros
- Highly customizable with various themes and settings
- Privacy-focused with no ads or tracking
- Open-source, allowing for community contributions and transparency
- Supports advanced features like message scheduling and auto-replies
Cons
- Limited to Android platform only
- May lack some carrier-specific features found in stock messaging apps
- Requires manual updates as it's not available on Google Play Store
- Some users report occasional syncing issues with MMS
Getting Started
To get started with QKSMS:
- Visit the GitHub repository: https://github.com/moezbhatti/qksms
- Download the latest APK file from the releases section
- Enable "Install from unknown sources" in your Android settings
- Install the APK on your Android device
- Open QKSMS and follow the setup wizard to configure it as your default SMS app
Note: As QKSMS is not a code library but an Android application, there are no code examples or quick start instructions for developers. The above instructions are for end-users to install and use the app.
Competitor Comparisons
An open-source keyboard for Android which respects your privacy. Currently in early-beta.
Pros of FlorisBoard
- Customizable keyboard layout with multiple languages and themes
- Open-source project with active community development
- Supports gesture typing and clipboard management
Cons of FlorisBoard
- Still in beta, may have stability issues
- Limited emoji support compared to QKSMS
- Steeper learning curve for users accustomed to traditional keyboards
Code Comparison
FlorisBoard (Kotlin):
override fun onCreateInputView(): View {
return InputView(this).also { inputView ->
setInputView(inputView)
}
}
QKSMS (Kotlin):
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
}
FlorisBoard focuses on creating a custom input view for the keyboard, while QKSMS sets up a standard activity layout. This reflects the different purposes of the two apps: FlorisBoard as a keyboard replacement and QKSMS as a messaging app.
Both projects use Kotlin, demonstrating modern Android development practices. However, FlorisBoard's code is more specialized for keyboard functionality, whereas QKSMS has a broader scope for messaging features.
A private messenger for Android.
Pros of Signal-Android
- Enhanced security features, including end-to-end encryption
- Broader functionality beyond SMS, including voice and video calls
- Regular updates and active development from a dedicated team
Cons of Signal-Android
- Larger app size and potentially higher resource usage
- Requires users to create an account and use Signal's servers
- Less customizable interface compared to QKSMS
Code Comparison
QKSMS (Kotlin):
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = ComposeActivityBinding.inflate(inflater, container, false)
return binding.root
}
Signal-Android (Java):
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.conversation_fragment, container, false);
composeText = view.findViewById(R.id.embedded_text_editor);
return view;
}
Both repositories use similar patterns for creating views, but QKSMS utilizes Kotlin's view binding feature for a more concise syntax, while Signal-Android uses traditional Java view inflation and findViewById methods.
A Matrix collaboration client for Android.
Pros of Element
- Supports end-to-end encryption for secure messaging
- Offers cross-platform synchronization and multiple device support
- Provides a wider range of features, including voice/video calls and file sharing
Cons of Element
- More complex codebase due to additional features
- Potentially higher resource usage and battery consumption
- Steeper learning curve for new contributors due to project complexity
Code Comparison
QKSMS (Kotlin):
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = ComposeActivityBinding.inflate(inflater, container, false)
return binding.root
}
Element (Kotlin):
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_views = FragmentRoomDetailBinding.inflate(inflater, container, false)
return views.root
}
Both projects use Kotlin and follow similar patterns for view inflation in fragments. Element tends to have more complex view hierarchies due to its broader feature set.
Email-based instant messaging for Android.
Pros of DeltaChat
- Decentralized architecture using email protocols for enhanced privacy and security
- Cross-platform compatibility with iOS, desktop, and web versions available
- End-to-end encryption for all messages and attachments
Cons of DeltaChat
- Steeper learning curve due to email-based system and additional setup requirements
- Potentially slower message delivery compared to traditional SMS or instant messaging
- Limited adoption and user base compared to more mainstream messaging apps
Code Comparison
DeltaChat (Kotlin):
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.main_container, ConversationListFragment())
.commit()
}
}
QKSMS (Kotlin):
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
if (isDefaultSms()) {
navigator.showMain()
} else {
navigator.showDefaultSmsDialog()
}
}
Both projects use Kotlin and follow similar patterns for activity creation. DeltaChat focuses on loading a conversation list fragment, while QKSMS checks for default SMS app status before navigation.
Thunderbird for Android – Open Source Email App for Android (fka K-9 Mail)
Pros of Thunderbird
- Backed by Mozilla, providing more resources and potential for long-term support
- Integrates with existing Thunderbird desktop client, offering a seamless experience across devices
- Supports multiple email accounts and protocols beyond just SMS
Cons of Thunderbird
- Larger codebase and more complex functionality, potentially leading to slower updates and more bugs
- Less focused on SMS-specific features compared to QKSMS
- May have a steeper learning curve for users who only need SMS functionality
Code Comparison
QKSMS (Kotlin):
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = ComposeActivityBinding.inflate(inflater, container, false)
return binding.root
}
Thunderbird (Java):
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.message_list_fragment, container, false);
initializeMessageList(view);
return view;
}
The code snippets show differences in language (Kotlin vs Java) and approach to view binding. QKSMS uses view binding, while Thunderbird uses a more traditional approach with findViewById()
calls (not shown in the snippet).
Both projects follow modern Android development practices, but QKSMS's use of Kotlin and view binding may lead to more concise and null-safe code.
Proton Mail Android app
Pros of proton-mail-android
- Focuses on privacy and security with end-to-end encryption
- Integrates with the broader Proton ecosystem (ProtonVPN, ProtonCalendar)
- Regularly updated with new features and security improvements
Cons of proton-mail-android
- Limited to email functionality, unlike QKSMS which handles SMS/MMS
- Requires a Proton account, while QKSMS works with any SMS provider
- Less customizable UI compared to QKSMS's extensive theming options
Code Comparison
QKSMS (Kotlin):
override fun bindIntents() {
conversationRepo.getConversations()
.autoDisposable(scope())
.subscribe { conversations ->
newState { it.copy(conversations = conversations) }
}
}
proton-mail-android (Kotlin):
override fun observeData() {
viewModelScope.launch {
mailboxManager.observeMailboxes()
.collect { mailboxes ->
_uiState.update { it.copy(mailboxes = mailboxes) }
}
}
}
Both projects use Kotlin and follow reactive programming patterns, but proton-mail-android leverages Kotlin coroutines for asynchronous operations, while QKSMS uses RxJava.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
QKSMS
QKSMS is an open source replacement to the stock messaging app on Android. It is currently available on the Google Play Store and on F-Droid
Reporting bugs
A great bug report contains a description of the problem and steps to reproduce the problem. We need to know what we're looking for and where to look for it.
When reporting a bug, please make sure to provide the following information:
- Steps to reproduce the issue
- QKSMS version
- Device / OS information
Translations
If you'd like to add translations to QKSMS, please join the project on Crowdin. Translations that are committed directly to source files will not be accepted.
Thank you
A special thank you to Jake (@klinker41) and Luke Klinker (@klinker24) for their work on android-smsmms, which has been an unspeakably large help in implementing MMS into QKSMS.
Contact
QKSMS is developed and maintained by Moez Bhatti. Feel free to reach out to moez@qklabs.com
License
QKSMS is released under the The GNU General Public License v3.0 (GPLv3), which can be found in the LICENSE
file in the root of this project.
Top Related Projects
An open-source keyboard for Android which respects your privacy. Currently in early-beta.
A private messenger for Android.
A Matrix collaboration client for Android.
Email-based instant messaging for Android.
Thunderbird for Android – Open Source Email App for Android (fka K-9 Mail)
Proton Mail Android app
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot