簡體   English   中英

通過單擊外部鏈接在 WebView 中打開頁面

[英]Open page in WebView by clicking on an external link

我有一個網站,它有一個 web 版本和一個 webview。 有必要直接在應用程序(如果已安裝)中打開鏈接以恢復用戶在其 email 中收到的密碼。

將以下代碼添加到 AndroidManifest.xml 后,我可以通過單擊鏈接打開應用程序。

 <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:host="*" android:scheme="myapp"/>
 </intent-filter>

我為測試而創建的鏈接:

<a href="myapp://www.site.com/password-reset/token/abc123">Click</a>

但是,它總是在應用程序中打開主頁,而不是在鏈接中打開特定頁面。

我是否需要對應用程序進行任何進一步的修改才能解釋這種類型的鏈接?

主要活動:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    webView = findViewById(R.id.webview);
    webView.loadUrl("https://www.site.app");

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView wv, String url) {
            
        }

        @Override
        public void onPageFinished(WebView view, String url) {

        }
   });
}

解決方案:

    Intent intent = getIntent();
    Uri data = intent.getData();
    
    if (data != null && data.toString().startsWith("myapp:")) {
        urlIntent = data.toString().replace("myapp", "https");
    } else {
        urlIntent = "https://www.site.app";
    }

    webView.loadUrl(urlIntent);

Deeplinks通常只會觸發應用程序打開,除非您定義基於FragmentActivityintent-filters或手動處理,否則它們不會幫助您導航或打開特定位置。

您應該首先從intent中獲取包含URL的數據,然后將其作為WebView提供給URL 您可以在onNewIntentonCreate方法中執行此操作;

override fun onNewIntent(intent: Intent){
    super.onNewIntent(intent)

    val uri = intent.data
}

然后將其加載到WebView中;

webview.loadUrl(uri.toString())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM