Embed Spotify не работает должным образом на веб-сайте Android - PullRequest
0 голосов
/ 20 января 2020

Я использовал 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]

Я действительно обнаружил, что этой ошибки не происходит на большинстве телефонов. До сих пор мое единственное уязвимое место не только в приложении, но и в браузерах (веб-сайты, содержащие встроенный спойт). У кого-нибудь есть идеи?

...