Как определить приложение для смс, установленное по-умолчанию

Нужно определить приложения с функцией отправки сообщений, выбрать то одно из них, которое установлено по-умолчанию и запустить его. Имеющийся код на эту тему, который я не понял как использовать.

fun getPackagesOfDialerApps(context: Context): List<String>? {
  val packageNames: MutableList<String> = ArrayList()
  val intent = Intent()
  intent.action = Intent.ACTION_SENDTO

  val resolveInfos =
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    context.packageManager.queryIntentActivities(intent, PackageManager.ResolveInfoFlags.of(
        MATCH_DEFAULT_ONLY.toLong()))
  }else{
    @Suppress("DEPRECATION")
    context.packageManager.queryIntentActivities(intent, 0)
  }

   for (resolveInfo in resolveInfos) {
    val activityInfo = resolveInfo.activityInfo
    packageNames.add(activityInfo.applicationInfo.packageName)
  }
  return packageNames
 }



fun isDefaultDialer(context: Context, packageNameToCheck: String = context.packageName): Boolean {
  val dialingIntent = Intent(Intent.ACTION_SENDTO).addCategory(Intent.CATEGORY_DEFAULT)
  val resolveInfoList =
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        context.packageManager.queryIntentActivities(dialingIntent, PackageManager.ResolveInfoFlags.of(0))
    }else{
        @Suppress("DEPRECATION")
        context.packageManager.queryIntentActivities(dialingIntent, 0)
    }

  if (resolveInfoList.size != 1)
    return false
  return packageNameToCheck == resolveInfoList[0].activityInfo.packageName
}


 val phoneNumber = "+79065808808"
 val uri = Uri.parse("smsto:$phoneNumber")
 val launchIntent = Intent("${isDefaultSender(this)}", uri)
 startActivity(launchIntent)

Так же указал в манифесте:

<uses-permission
        android:name="android.permission.QUERY_ALL_PACKAGES"
        tools:ignore="QueryAllPackagesPermission" />

Ответы (0 шт):