Я использовал embed spotify в веб-просмотре внутри моего приложения, и все работало нормально. Но это внезапно перестало работать. Теперь каждый раз, когда я нажимаю кнопку воспроизведения или щелкаю песню из списка воспроизведения, она перенаправляет меня на «spotify: playlist: (код списка воспроизведения)». Я на самом деле фиксирую это намерение, но я хотел, чтобы песня воспроизводилась внутри веб-просмотра, без перенаправления на приложение spotify, как это было раньше.
Мой WebViewClient:
class MyWebViewClient(private val originUrl: String?) : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
if (Uri.parse(url).scheme.containsIntent(listOf("market", "whatsapp", "spotify"))){
val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse(url)
val host: Activity = view?.context as Activity
host.startActivity(intent)
view.loadUrl(originUrl)
return true
}
return false
}
}
Я фактически инициализируем его в представлении рециркулятора:
class WebViewHolder(itemView: View) : ViewHolder(itemView),
HolderInterface {
private val webView: WebView = itemView.findViewById(R.id.webview)
private var link: String? = null
init {
webView.webChromeClient = WebChromeClient()
}
override fun bind(message: Message) {
if (link == null){
link = message.text
webView.webViewClient = MyWebViewClient(link)
webView.settings.javaScriptEnabled = true
webView.setOnTouchListener { view, _ ->
view.parent.requestDisallowInterceptTouchEvent(true)
false
}
webView.loadUrl(link)
}
}
}
Раздуваем его с помощью этого макета:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="400dp"
android:paddingLeft="15dp"
android:paddingStart="15dp"
android:paddingRight="15dp"
android:paddingEnd="15dp"
android:paddingTop="10dp"
android:paddingBottom="10dp" >
<androidx.cardview.widget.CardView
android:id="@+id/bot_image"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_margin="1dp"
android:thicknessRatio="1.9"
app:cardCornerRadius="30dp">
<ImageView
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_gravity="center"
android:src="@drawable/chat_bot_avatar"/>
</androidx.cardview.widget.CardView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginLeft="5dp"
android:layout_toEndOf="@id/bot_image"
android:layout_toRightOf="@id/bot_image">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:clickable="true" />
</RelativeLayout>
</RelativeLayout>
Я тестирую это веб-представление по этой ссылке: https://open.spotify.com/embed/playlist/27XP00bk55vpUc9KaQoIjz
.
Раньше работал в моем представлении переработчика. С тех пор я не вносил изменений в свои файлы веб-просмотра.
Что-то не так с этим кодом?
[EDIT]
Я действительно обнаружил, что этой ошибки не происходит на большинстве телефонов. До сих пор мое единственное уязвимое место не только в приложении, но и в браузерах (веб-сайты, содержащие встроенный спойт). У кого-нибудь есть идеи?