Открывая приложение по результатам google.com, всегда указывает на домашнюю страницу WebView Android - PullRequest
0 голосов
/ 27 февраля 2020

Я прошу прощения за мой Engli sh.

У меня проблема с перенаправлением на подстраницу результатов Google, SMS в WebView Android приложений.

Пример : страница с адресом https://siteadress.pl/category в результатах Google открывает приложение WebView и показывает домашнюю страницу (https://siteadress.pl/) СМОТРЕТЬ ФОТО

Пример : страница с точным продуктом https://siteadress.pl/shop/productxyz в результатах Google также открывает приложение WebView и показывает домашнюю страницу. Почему?

Ссылка (https://siteadress.pl/shop/productxyz) из SMS-сообщения также открывает приложение WebView и показывает главную страницу.

Я хочу указать точную страницу приложения в WebView, а не домашней страницы. : (

My AndroidManifest. xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="pl.APP">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="APP"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">

        <meta-data
                android:name="asset_statements"
                android:resource="@string/asset_statements" />

        <activity
                android:name=".SplashScreen"
                android:launchMode="singleTop"
                android:noHistory="true"
                android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>


            <meta-data
                    android:name="android.app.shortcuts"
                    android:resource="@xml/shortcuts" />
        </activity>


        <activity android:name=".ContactActivity" />
        <activity android:name=".CategoryActivity" />



        <activity
                android:name=".MainActivity"
                android:launchMode="singleTop"
                android:screenOrientation="portrait">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                        android:scheme="https"
                        android:host="siteadress.pl" />
            </intent-filter>
        </activity>

    </application>

</manifest>

My MainActivity. xml

package pl.APP

import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.support.annotation.RequiresApi
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.webkit.URLUtil
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*



class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        webView.webViewClient = MyWebViewClient()
        webView.loadUrl("https://siteadress.pl/")
        webView.settings.javaScriptEnabled = true
    }

    override fun onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack()
        } else {
            super.onBackPressed()
        }
    }

    inner class MyWebViewClient : WebViewClient()
    {
        override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean
        {
            if(URLUtil.isNetworkUrl(url))
            {
                return false
            }
            try
            {
                val shareIntent= Intent()
                shareIntent.action=Intent.ACTION_VIEW
                shareIntent.data= Uri.parse(url)
                startActivity(shareIntent)
            }
            catch(e: ActivityNotFoundException)
            {
                Toast.makeText(this@MainActivity, "Appropriate app not found", Toast.LENGTH_LONG).show()
                Log.e("AndroidRide",e.toString())
            }
            return true
        }
        @RequiresApi(Build.VERSION_CODES.N)
        override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean
        {
            val url=request?.url.toString()
            if(URLUtil.isNetworkUrl(url))
            {
                return false
            }
            try
            {
                val shareIntent= Intent()
                shareIntent.action=Intent.ACTION_VIEW
                shareIntent.data= Uri.parse(url)
                startActivity(shareIntent)
            }
            catch(e: ActivityNotFoundException)
            {
                Toast.makeText(this@MainActivity, "Appropriate app not found", Toast.LENGTH_LONG).show()
                Log.e("AndroidRide",e.toString())
            }
            return true

        }

    }


}

Спасибо за помощь:)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Готово! Эта версия в "Kotlin" работает:

val url = intent.data.toString()

if (URLUtil.isValidUrl(url)) {
    webView.loadUrl(url)
} else {
    webView.loadUrl("https://siteadress.pl/")
}

Спасибо за помощь :) ufff

0 голосов
/ 27 февраля 2020

Решение заключается в том, что сначала вам нужно обработать ссылку на приложение, получить правильную ссылку, а затем загрузить эту ссылку в свой WeView:

Uri data = getIntent().getData();

if (data != null) {
    String url = data.toString();
    webView.loadUrl(url);
} else {
    webView.loadUrl("https://siteadress.pl/");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...