Deeplink使用经验

Deeplink使用经验

1.Deeplink
一个网站有很多页面,每个页面有自己的地址,通过页面的网址打开各个深层的页面;
一个应用也可以包含多个页面,Deeplink技术配置各个页面的对外链接,可以通过具体的链接打开各个深层的页面。
一个deeplink链接可以包含以下信息:url,clicktrackers,fallback,extensions
Deeplink使用经验_第1张图片

  • 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
    Deeplink使用经验_第2张图片
    Intent是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由 Intent来协助完成 Android各个组件之间的通讯。
    我们以Activity的跳转为例,Intent可分为显示和隐式两种:
    显式的方式明确跳转的Activity是哪一个:
    Intent intent = new Intent(Activity-1.this, Activity-2.class)
    startActivity(intent)

隐式的方式不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的来筛选:
Deeplink使用经验_第3张图片
此处设置了对外的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
    Deeplink使用经验_第4张图片
  • net::ERR_UNKNOWN_URL_SCHEME
    通过shouldOverrideUrlLoading自定义方式加载url

2.3 WebView支持intent格式,实现app跳转
Deeplink使用经验_第5张图片

你可能感兴趣的:(android,android,studio)