Fixed: "Send diagnostic report" function should open the user's email client.

* Previously, other apps were appearing in the suggestions when sending the diagnostic report. We have improved our intent so that it now directly opens the user's email client to send the diagnostic report to us.
This commit is contained in:
MohitMaliFtechiz 2024-10-07 17:36:24 +05:30
parent 9954193fed
commit e12387e256
2 changed files with 23 additions and 7 deletions

View File

@ -19,6 +19,7 @@ package org.kiwix.kiwixmobile.core.error
import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Process
@ -28,12 +29,17 @@ import androidx.core.content.FileProvider
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch
import org.kiwix.kiwixmobile.core.CoreApp.Companion.coreComponent
import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.compat.CompatHelper.Companion.getPackageInformation
import org.kiwix.kiwixmobile.core.compat.CompatHelper.Companion.getVersionCode
import org.kiwix.kiwixmobile.core.compat.CompatHelper.Companion.queryIntentActivitiesCompat
import org.kiwix.kiwixmobile.core.compat.ResolveInfoFlagsCompat
import org.kiwix.kiwixmobile.core.dao.NewBookDao
import org.kiwix.kiwixmobile.core.databinding.ActivityKiwixErrorBinding
import org.kiwix.kiwixmobile.core.extensions.toast
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.utils.CRASH_AND_FEEDBACK_EMAIL_ADDRESS
import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.getCurrentLocale
import org.kiwix.kiwixmobile.core.utils.files.FileLogger
import org.kiwix.kiwixmobile.core.zim_manager.MountPointProducer
@ -90,7 +96,19 @@ open class ErrorActivity : BaseActivity() {
private fun setupReportButton() {
activityKiwixErrorBinding?.reportButton?.setOnClickListener {
lifecycleScope.launch {
sendEmailLauncher.launch(Intent.createChooser(emailIntent(), "Send email..."))
val emailIntent = emailIntent()
val activities =
packageManager.queryIntentActivitiesCompat(emailIntent, ResolveInfoFlagsCompat.EMPTY)
if (activities.isNotEmpty()) {
sendEmailLauncher.launch(Intent.createChooser(emailIntent, "Send email..."))
} else {
toast(
getString(
R.string.no_email_application_installed,
CRASH_AND_FEEDBACK_EMAIL_ADDRESS
)
)
}
}
}
}
@ -102,12 +120,9 @@ open class ErrorActivity : BaseActivity() {
private suspend fun emailIntent(): Intent {
val emailBody = buildBody()
return Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(
Intent.EXTRA_EMAIL,
arrayOf("android-crash-feedback@kiwix.org")
)
return Intent(Intent.ACTION_SENDTO).apply {
data = Uri.parse("mailto:")
putExtra(Intent.EXTRA_EMAIL, arrayOf(CRASH_AND_FEEDBACK_EMAIL_ADDRESS))
putExtra(Intent.EXTRA_SUBJECT, subject)
putExtra(Intent.EXTRA_TEXT, emailBody)
val file = fileLogger.writeLogFile(

View File

@ -18,6 +18,7 @@
package org.kiwix.kiwixmobile.core.utils
const val TAG_KIWIX = "kiwix"
const val CRASH_AND_FEEDBACK_EMAIL_ADDRESS = "android-crash-feedback@kiwix.org"
// Request stuff
const val REQUEST_STORAGE_PERMISSION = 1