From 0f4e89c8a946248618e61d6b8c306c535a16e62c Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 4 Apr 2020 16:44:40 +0200 Subject: [PATCH] do not allow using the app, if it isnt the default SMS handler --- app/src/main/AndroidManifest.xml | 54 +++++++++++++++++++ .../smsmessenger/activities/MainActivity.kt | 42 ++++++++++++--- .../activities/NewMessageActivity.kt | 23 ++++++++ .../smsmessenger/receivers/MmsReceiver.kt | 11 ++++ .../smsmessenger/receivers/SmsReceiver.kt | 11 ++++ .../services/HeadlessSmsSendService.kt | 11 ++++ .../main/res/layout/activity_new_message.xml | 7 +++ 7 files changed, 152 insertions(+), 7 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt create mode 100644 app/src/main/res/layout/activity_new_message.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 09b2ae66..2acc6262 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,7 +3,14 @@ xmlns:tools="http://schemas.android.com/tools" package="com.simplemobiletools.smsmessenger"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt index c01680ad..59bbbb4f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -1,13 +1,17 @@ package com.simplemobiletools.smsmessenger.activities +import android.app.Activity import android.content.Intent import android.os.Bundle +import android.provider.Telephony +import android.util.Log import android.view.Menu import android.view.MenuItem import com.simplemobiletools.commons.extensions.appLaunched import com.simplemobiletools.commons.extensions.checkAppSideloading import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.commons.helpers.PERMISSION_READ_SMS +import com.simplemobiletools.commons.helpers.isQPlus import com.simplemobiletools.commons.models.FAQItem import com.simplemobiletools.smsmessenger.BuildConfig import com.simplemobiletools.smsmessenger.R @@ -22,6 +26,7 @@ import kotlinx.android.synthetic.main.activity_main.* class MainActivity : SimpleActivity() { private var storedTextColor = 0 + private val MAKE_DEFAULT_APP_REQUEST = 1 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -32,14 +37,13 @@ class MainActivity : SimpleActivity() { return } - // while READ_SMS permission is mandatory, READ_CONTACTS is optional. If we don't have it, we just won't be able to show the contact name in some cases - handlePermission(PERMISSION_READ_SMS) { - if (it) { - handlePermission(PERMISSION_READ_CONTACTS) { - initMessenger() - } + if (Telephony.Sms.getDefaultSmsPackage(this) != packageName) { + if (isQPlus()) { + } else { - finish() + val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT) + intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName) + startActivityForResult(intent, MAKE_DEFAULT_APP_REQUEST) } } } @@ -70,10 +74,34 @@ class MainActivity : SimpleActivity() { return true } + override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { + super.onActivityResult(requestCode, resultCode, resultData) + if (requestCode == MAKE_DEFAULT_APP_REQUEST) { + if (resultCode == Activity.RESULT_OK) { + askPermissions() + } else { + finish() + } + } + } + private fun storeStateVariables() { storedTextColor = config.textColor } + // while READ_SMS permission is mandatory, READ_CONTACTS is optional. If we don't have it, we just won't be able to show the contact name in some cases + private fun askPermissions() { + handlePermission(PERMISSION_READ_SMS) { + if (it) { + handlePermission(PERMISSION_READ_CONTACTS) { + initMessenger() + } + } else { + finish() + } + } + } + private fun initMessenger() { storeStateVariables() val messages = getMessages() diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt new file mode 100644 index 00000000..292edfa7 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt @@ -0,0 +1,23 @@ +package com.simplemobiletools.smsmessenger.activities + +import android.os.Bundle +import com.simplemobiletools.commons.extensions.applyColorFilter +import com.simplemobiletools.commons.extensions.onTextChangeListener +import com.simplemobiletools.commons.extensions.value +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.adapters.ThreadAdapter +import com.simplemobiletools.smsmessenger.extensions.config +import com.simplemobiletools.smsmessenger.extensions.getMessages +import com.simplemobiletools.smsmessenger.helpers.THREAD_ID +import com.simplemobiletools.smsmessenger.helpers.THREAD_NAME +import com.simplemobiletools.smsmessenger.helpers.THREAD_NUMBER +import com.simplemobiletools.smsmessenger.models.ThreadDateTime +import com.simplemobiletools.smsmessenger.models.ThreadItem +import kotlinx.android.synthetic.main.activity_thread.* + +class NewMessageActivity : SimpleActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_new_message) + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt new file mode 100644 index 00000000..854120a9 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -0,0 +1,11 @@ +package com.simplemobiletools.smsmessenger.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent + +class MmsReceiver : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt new file mode 100644 index 00000000..3f4cb950 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -0,0 +1,11 @@ +package com.simplemobiletools.smsmessenger.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent + +class SmsReceiver : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt new file mode 100644 index 00000000..f5a4d05b --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt @@ -0,0 +1,11 @@ +package com.simplemobiletools.smsmessenger.services + +import android.app.Service +import android.content.Intent +import android.os.IBinder + +class HeadlessSmsSendService : Service() { + override fun onBind(intent: Intent?): IBinder? { + return null + } +} diff --git a/app/src/main/res/layout/activity_new_message.xml b/app/src/main/res/layout/activity_new_message.xml new file mode 100644 index 00000000..ed3b386b --- /dev/null +++ b/app/src/main/res/layout/activity_new_message.xml @@ -0,0 +1,7 @@ + + + +