Fix crash when importing web search
This commit is contained in:
parent
b891c0ea79
commit
bac24baad2
@ -1,14 +1,11 @@
|
|||||||
package de.mm20.launcher2.searchactions
|
package de.mm20.launcher2.searchactions
|
||||||
|
|
||||||
import android.app.SearchManager
|
|
||||||
import android.app.SearchableInfo
|
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.util.Log
|
|
||||||
import android.util.Xml
|
import android.util.Xml
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import coil.imageLoader
|
import coil.imageLoader
|
||||||
@ -120,8 +117,8 @@ internal class SearchActionServiceImpl(
|
|||||||
?.absUrl("href")
|
?.absUrl("href")
|
||||||
?.takeIf { it.isNotEmpty() }
|
?.takeIf { it.isNotEmpty() }
|
||||||
|
|
||||||
var action = openSearchHref?.let {
|
val action = openSearchHref?.let {
|
||||||
importOpenSearch(it)
|
importOpenSearch(it, iconSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action != null) {
|
if (action != null) {
|
||||||
@ -139,7 +136,7 @@ internal class SearchActionServiceImpl(
|
|||||||
return@withContext null
|
return@withContext null
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun importOpenSearch(openSearchHref: String): WebsearchActionBuilder? {
|
private suspend fun importOpenSearch(openSearchHref: String, iconSize: Int): WebsearchActionBuilder? {
|
||||||
try {
|
try {
|
||||||
val httpClient = OkHttpClient()
|
val httpClient = OkHttpClient()
|
||||||
val request = Request.Builder()
|
val request = Request.Builder()
|
||||||
@ -151,8 +148,8 @@ internal class SearchActionServiceImpl(
|
|||||||
var label: String? = null
|
var label: String? = null
|
||||||
var urlTemplate: String? = null
|
var urlTemplate: String? = null
|
||||||
var icon: String? = null
|
var icon: String? = null
|
||||||
var iconSize: Int = 0
|
var largestIconSize: Int = 0
|
||||||
var iconUrl: String? = null
|
var largestIcon: String? = null
|
||||||
|
|
||||||
inputStream.use {
|
inputStream.use {
|
||||||
val parser = Xml.newPullParser()
|
val parser = Xml.newPullParser()
|
||||||
@ -175,13 +172,13 @@ internal class SearchActionServiceImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
"Image" -> {
|
"Image" -> {
|
||||||
val size =
|
val width =
|
||||||
parser.getAttributeValue(null, "width")?.toIntOrNull() ?: 0
|
parser.getAttributeValue(null, "width")?.toIntOrNull() ?: 0
|
||||||
if (size > iconSize || iconUrl == null) {
|
if (width > largestIconSize || largestIcon == null) {
|
||||||
parser.next()
|
parser.next()
|
||||||
if (parser.eventType == XmlPullParser.TEXT) {
|
if (parser.eventType == XmlPullParser.TEXT) {
|
||||||
iconUrl = parser.text
|
largestIcon = parser.text
|
||||||
iconSize = size
|
largestIconSize = width
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,7 +202,7 @@ internal class SearchActionServiceImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val localIconUrl = iconUrl?.let {
|
val localIconUrl = largestIcon?.let {
|
||||||
val uri = Uri.parse(it)
|
val uri = Uri.parse(it)
|
||||||
createIcon(uri, iconSize)
|
createIcon(uri, iconSize)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user