Deeplink使用經驗

Deeplink使用經驗

1.Deeplink
一個網站有很多頁面,每個頁面有自己的地址,通過頁面的網址打開各個深層的頁面;
一個應用也可以包含多個頁面,Deeplink技術配置各個頁面的對外鏈接,可以通過具體的鏈接打開各個深層的頁面。
一個deeplink鏈接可以包含以下信息:url,clicktrackers,fallback,extensions
在這裏插入圖片描述



  • URL SCHEME
    我們可以把一個app看做一個獨立的網站,而URL Scheme就是網址。比如撥號,我們使用tel://112 就可以打開撥號應用。是否能打開app的具體頁面依賴於其本身是否支持deeplink,系統本身有一些默認 的url scheme,如tel://, mailto://等。

該頁面對應的URL(URI): deeplink://com.example.demo2/open
adb shell am start -a android.intent.action.VIEW -d deeplink://com.example.demo2/open

對外公開scheme的部分應用:https://www.cnblogs.com/ygunoil/p/11654867.html

  • Intent
    在這裏插入圖片描述
    Intent是一個將要執行的動作的抽象的描述,一般來說是作爲參數來使用,由 Intent來協助完成 Android各個組件之間的通訊。
    我們以Activity的跳轉爲例,Intent可分爲顯示和隱式兩種:
    顯式的方式明確跳轉的Activity是哪一個:
    Intent intent = new Intent(Activity-1.this, Activity-2.class)
    startActivity(intent)





隱式的方式不明確指定啓動哪個Activity,而是設置Action、Data、Category,讓系統來篩選出合適的Activity。篩選是根據所有的來篩選:
在這裏插入圖片描述
此處設置了對外的url scheme,可通過封裝Intent 跳轉
Uri uri = Uri.parse(url)
Intent intent = new Intent(Intent.ACTION_VIEW).setData(uri)
intent.putExtra(key, value)
startActivity(intent)
參考:https://developer.android.google.cn/guide/components/intents-filters






2.WebView
2.1WebView是android中一個非常重要的控件,它的作用是用來展示一個web頁面。它使用的內核是webkit引擎,4.4版本之後,直接使用Chrome作爲內置網頁瀏覽器。

  • loadUrl
    用於加載指定url的API,如webView.loadUrl(“https://www.google.com”)
  • WebSettings
    設置Webview的參數,如是否支持頁面中的js代碼,緩存,編碼格式等
  • WebViewClient
    處理各種通知和請求事件,其中有幾個方法可以重寫
  • onPageStarted
    開始載入頁面調用的,我們可以設定一個loading的頁面,告訴用戶程序在等待網絡響應。
  • onPageFinished
    在頁面加載結束時調用。我們可以關閉loading 條,切換程序動作
  • onReceivedError
    加載頁面的服務器出現錯誤時(如404)調用
  • shouldOverrideUrlLoading
    在網頁上的所有加載都經過這個方法,這個函數我們可以做很多操作。返回false表示通過webview加載url;返回true表示通過自定義方式加載url。
  • WebChromeClient
    輔助 WebView 處理 Javascript 的對話框,網站圖標,網站標題等等
  • onCloseWindow
    js中調用window.close會觸發該方法,可通過該方法實現頁面自動關閉
  • onProgressChanged
    頁面加載進度,可通過該方法自定義頁面加載進度UI

2.2.Android與js交互

  • addJavascriptInterface
    添加供js調用的java代碼
  • evaluateJavascript(“javascript:Function(’” + parameter + “’)”, [resultCallback]);
    Java調用js中的方法,並且可以獲取其返回
  • Denied starting an intent without a user gesture
    在這裏插入圖片描述
  • net::ERR_UNKNOWN_URL_SCHEME
    通過shouldOverrideUrlLoading自定義方式加載url

2.3 WebView支持intent格式,實現app跳轉
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章