134 lines
4.5 KiB
Kotlin
134 lines
4.5 KiB
Kotlin
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
|
|
import com.simplemobiletools.smsmessenger.adapters.MessagesAdapter
|
|
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.Message
|
|
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)
|
|
setContentView(R.layout.activity_main)
|
|
appLaunched(BuildConfig.APPLICATION_ID)
|
|
|
|
if (checkAppSideloading()) {
|
|
return
|
|
}
|
|
|
|
if (Telephony.Sms.getDefaultSmsPackage(this) != packageName) {
|
|
if (isQPlus()) {
|
|
|
|
} else {
|
|
val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
|
|
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
|
|
startActivityForResult(intent, MAKE_DEFAULT_APP_REQUEST)
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun onResume() {
|
|
super.onResume()
|
|
if (storedTextColor != config.textColor) {
|
|
(messages_list.adapter as? MessagesAdapter)?.updateTextColor(config.textColor)
|
|
}
|
|
}
|
|
|
|
override fun onPause() {
|
|
super.onPause()
|
|
storeStateVariables()
|
|
}
|
|
|
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
|
menuInflater.inflate(R.menu.menu, menu)
|
|
return true
|
|
}
|
|
|
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
|
when (item.itemId) {
|
|
R.id.settings -> launchSettings()
|
|
R.id.about -> launchAbout()
|
|
else -> return super.onOptionsItemSelected(item)
|
|
}
|
|
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()
|
|
MessagesAdapter(this, messages, messages_list, messages_fastscroller) {
|
|
Intent(this, ThreadActivity::class.java).apply {
|
|
putExtra(THREAD_ID, (it as Message).thread)
|
|
putExtra(THREAD_NAME, it.senderName)
|
|
putExtra(THREAD_NUMBER, it.senderNumber)
|
|
startActivity(this)
|
|
}
|
|
}.apply {
|
|
messages_list.adapter = this
|
|
}
|
|
}
|
|
|
|
private fun launchSettings() {
|
|
startActivity(Intent(applicationContext, SettingsActivity::class.java))
|
|
}
|
|
|
|
private fun launchAbout() {
|
|
val licenses = 0
|
|
|
|
val faqItems = arrayListOf(
|
|
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
|
|
FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons)
|
|
)
|
|
|
|
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
|
|
}
|
|
}
|