Как сделать глубокую ссылку на все ссылки моего сайта (https://freeairdrop.io/) на мое приложение для Android, созданное с помощью веб-просмотра - PullRequest
0 голосов
/ 06 июля 2019

У меня есть веб-сайт https://freeairdrop.io/. Я создал приложение для Android на этом веб-сайте с помощью WebView.Как мне перенаправить все ссылки моего сайта на мое приложение для Android.

Это мой файл MainActivity.java.

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    progressBar.setMax(100);
    webView = (WebView) findViewById(R.id.webView);
    webView.setWebViewClient(new WebViewClientDemo());
    webView.setWebChromeClient(new WebChromeClientDemo());
    webView.getSettings().setJavaScriptEnabled(true);

    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

    webView.loadUrl("https://freeairdrop.io/");

    mySwipeRefreshLayout = (SwipeRefreshLayout)this.findViewById(R.id.swipeContainer);


    mySwipeRefreshLayout.setOnRefreshListener(
            new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    webView.reload();
                    mySwipeRefreshLayout.setRefreshing(false);
                }
            }
    );





}






private class WebViewClientDemo extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Uri uri = Uri.parse(url);
        if (uri.getHost() != null && (url.startsWith("https://freeairdrop.io/") || url.startsWith("https://www.freeairdrop.io/"))) {
            return false;
        }

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        view.getContext().startActivity(intent);
        return true;
    }
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.GONE);
        progressBar.setProgress(100);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.VISIBLE);
        progressBar.setProgress(0);
    }
}


private class WebChromeClientDemo extends WebChromeClient {
    public void onProgressChanged(WebView view, int progress) {
        progressBar.setProgress(progress);
    }
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
        webView.goBack();
        return true;
    }
    else {
    \\finish();
    }
    return super.onKeyDown(keyCode, event);
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return true;
}

@Override
// This method is used to detect back button
public void onBackPressed() {
    if(webView.canGoBack()) {
        webView.goBack();
    } else {
        // Let the system handle the back button
        super.onBackPressed();
    }
}
} ``

Файл AndroindManifest:

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

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

<application
    android:hardwareAccelerated="true"
    android:allowBackup="true"
    android:fullBackupContent="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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


        <intent-filter>
            <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="freeairdrop.io" ></data>
        </intent-filter>
        </activity>
        </application>

        </manifest>

Всякий раз, когдаЯ нажимаю на любую ссылку (например, для https://freeairdrop.io/airdrop/younited.html) моего веб-сайта я могу открыть ее из моего приложения или с помощью любого браузера. Когда я нажимаю свое приложение, открывается только домашняя страница, а неупомянутая ссылка. Нужно ли что-то добавить на свой веб-сайт?

...