H 5 Android原生App伝達パラメータを起動する

7784 ワード

H 5 Android原生App伝達パラメータを起動する
@Author GQ 2018年04月25日
H 5テストページはAPPのWebViewページを呼び出す必要があり、開発者のテストを容易にするため
起動appを書いてパラメータurlを伝えてwebviewページを表示します
効果図
  • 使用qq内蔵ブラウザ、テスト使用UCブラウザがschemeを呼び出すことができなくて、それから“デバッグ”
  • をクリックします
    -appが起動し、TestWebViewActivityのロードページが開きます.
    AndroidManifestでの構成
    //       
    <activity android:name=".test.TestWebViewActivity">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
    
                    <category android:name="android.intent.category.BROWSABLE" />
                    <category android:name="android.intent.category.DEFAULT" />
    
                    <data
                        android:host="h5"
                        android:scheme="app" />
                intent-filter>
    activity>
  • schemehostは自分で勝手に書いたが、h 5の内容と一致する必要があり、訪問時にapp://h5
  • につづる.
    Html
    ダイレクトコピーコード、vue.js導入
    
    <html lang="en">
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
          name="viewport">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <head>
        <meta charset="UTF-8">
        <title>Titletitle>
        <script src="/dist/plugins/vue/vue.js">script>
    head>
    <body>
    <div id="app">
        <a href="javascript:void(0);"
           @click="startApp('')">  APPa>
    
        <div> app  h5,        div>
        <input type="text" v-model="url">
        <a href="javascript:void(0);"
           @click="startH5(url)">  a>
    div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                url: "1"
            },
            methods: {
                startApp: function (url) {
                    //alert(url)
                    window.location = "app://main?param=" + url;
                },
                startH5: function (url) {
                    //alert(url)
                    window.location = "app://h5?param=" + url;
                }
            }
        });
    
    script>
    body>
    html>
  • url私は入力パラメータに設定し、クライアントは直接呼び出しwebview.load(url)のロードを受信すれば
  • である.
    Kotlin部分コード
    //    
    try {
        var param = intent.data?.getQueryParameter("param")
            Log.e(TAG, "       param = $param")
            url = param
    } catch (e: Exception) {
        e.printStackTrace()
    }
    if (url != null && url.isNotEmpty()) {
        if (!url.contains("http")) {
            url = "http://" + url
        }
        progressWebView.loadUrl(url)
    } else {
        //url    
        showError("     ~")
    }