通过一个链接打开本地app,或者去下载app

以前支付宝发短信给你手机 ,然后你点开这个链接的时候会发现它自动的打开了支付宝软件   ,这个是如何做到的呢 ?

我认为实现的原理就是,这个链接通过浏览器打开,然后自动执行js方法,如果本地有支付宝软件,就去打开这个方法。。当然支付宝app也要做对应的处理了

1.app端的处理

其实这个主要的工作还是在链接js上的处理,app所要的操作就是很简单的,在android中的intent-filter提供了对应的操作,

<activity android:name=".H5CallActivity">
            <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:scheme="schemedemo"
                      android:host="pszh.com"
                      android:pathPrefix="/test/"
                    />
            </intent-filter>
        </activity>

其中的scheme和hos,以及pathPrefix 和链接的必须是一致的,h5的链接格式必须是

<a href="[scheme]://[host]/[path]?[query]"> 唤起应用 </a>

和上面的一一对应,scheme (唤起协议)和host(唤起指定host)是必须的有的,然后path(协议路径)和query(参数)可以没有

然后就是activity的处理了,

Uri uri = getIntent().getData();
        StringBuilder sb = new StringBuilder();
        // 唤起链接
        sb.append("string : ").append(getIntent().getDataString()).append("\n");
        sb.append("scheme : ").append(uri.getScheme()).append("\n");
        sb.append("host : ").append(uri.getHost()).append("\n");
        sb.append("port : ").append(uri.getPort()).append("\n");
        sb.append("path : ").append(uri.getPath()).append("\n");
        // 接收唤起的参数
        sb.append("name : ").append(uri.getQueryParameter("name")).append("\n");
        sb.append("page : ").append(uri.getQueryParameter("page"));

        tv_url.setText(sb.toString());

2js的处理

对于js的应用代码呢也贴下吧,这个是通过点击 Start or DownLoad这个按钮来下载的

<a id="call-app" href="javascript:;" > Start or Download </a><br/><br/>
        
        
    <script type="text/javascript">

            (function(){

        var ua = navigator.userAgent.toLowerCase();

        var t;

        var config = {

                /*scheme:必须*/

                scheme_IOS: 'schemedemo://',

                scheme_Adr: 'schemedemo://pszh.com/test/scheme?name=google&page=1',

                download_url: 'http://www.baidu.com',

                timeout: 600

        };



        function openclient() {

            var startTime = Date.now();



            var ifr = document.createElement('iframe');



            ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr;

            ifr.style.display = 'none';

            document.body.appendChild(ifr);



            var t = setTimeout(function() {

                var endTime = Date.now();



                if (!startTime || endTime - startTime < config.timeout + 200) {

                    window.location = config.download_url;

                } else {



                }

            }, config.timeout);



            window.onblur = function() {

                clearTimeout(t);

            }

        }

        window.addEventListener("DOMContentLoaded", function(){

            document.getElementById("call-app").addEventListener('click',

                    openclient, false);

        }, false);

    })()
    </script>

如果你不想点击打开链接就直接OK了呢,(这个呢可以直接问会js的人了)。也可以用下面的代码了

 <!DOCTYPE html>
    <html lang="en">
    <head>
    <title>h5跳原生</title>
    </head>

    <body></body>

    <script>

    (function(){

        var ua = navigator.userAgent.toLowerCase();

        var t;

        var config = {

/*scheme:必须*/

                scheme_IOS: 'schemedemo://',

                scheme_Adr: 'schemedemo://pszh.com/test/scheme?name=google&page=1',

                download_url: 'http://www.baidu.com',

                timeout: 600

        };



        function openclient() {

            var startTime = Date.now();



            var ifr = document.createElement('iframe');



            ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr;

            ifr.style.display = 'none';

            document.body.appendChild(ifr);



            var t = setTimeout(function() {

                var endTime = Date.now();



                if (!startTime || endTime - startTime < config.timeout + 200) {

                    window.location = config.download_url;

                } else {



                }

            }, config.timeout);



            window.onblur = function() {

                clearTimeout(t);

            }

        }

        openclient();

    })()
    </script>

    </html>




参考文献:

http://ihongqiqu.com/2015/12/03/html-call-native-app/

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 Vue 的 `template` 和 `methods` 来写一个静态打开电脑本地应用的功能。 在 `template` 中,你可以创建一个按钮或者链,用于打开本地应用。例如: ```html <template> <div> <button @click="openApp">打开应用</button> </div> </template> ``` 然后,在 `methods` 中,你可以使用 JavaScript 的 `window.open` 方法来打开本地应用。例如: ```javascript methods: { openApp() { window.open('C:\\Program Files\\MyApp\\MyApp.exe'); } } ``` 注意,打开本地应用可能需要用户的授权,因此你可能需要加上相应的安全机制。 ### 回答2: 要实现用Vue写一个静态打开电脑本地应用,需要以下步骤: 1. 首先,创建一个Vue项目。可以使用Vue CLI或手动创建一个Vue项目。 2. 在Vue项目的根目录中,创建一个新的文件夹,命名为"public"。 3. 在"public"文件夹中,创建一个HTML文件,比如"app.html"。在文件中,添加一个按钮或者链,用于触发打开本地应用的操作。 4. 在Vue项目的根组件中,使用Vue的模板语法,引入"app.html"文件。可以使用`<iframe>`标签或者`<embed>`标签。 5. 在"public"文件夹中,创建一个JavaScript文件,比如"main.js"。在该文件中,写入JavaScript代码,用于监听按钮或链的点击事件,并执行打开本地应用的操作。 6. 在Vue项目的根组件中,引入"main.js"文件。 7. 在"main.js"文件中,使用JavaScript的`window.open()`方法,指定要打开的本地应用的路径。 8. 运行Vue项目,打开浏览器,点击按钮或链,即可打开本地应用。 需要注意的是,由于安全性问题,浏览器可能会阻止直打开本地应用。在某些情况下,需要进行相关设置或配置,允许浏览器打开本地应用。 ### 回答3: Vue是一种用于构建用户界面的JavaScript框架,它通常用于构建单页面应用程序(Single Page Applications)。虽然Vue主要用于构建Web应用程序,但我们也可以使用Vue来创建一个静态打开电脑本地应用。 首先,我们需要使用Vue创建一个新的项目。我们可以使用Vue CLI(命令行界面)来快速创建一个新的Vue项目。在终端中,我们可以运行以下命令来创建一个新的Vue项目: ``` vue create local-app ``` 这将创建一个名为`local-app`的新的Vue项目。 下来,我们需要配置Vue应用程序的路由。我们可以使用Vue Router库来实现路由功能。在Vue项目的根目录,我们可以使用以下命令来安装Vue Router: ``` npm install vue-router ``` 在Vue项目的`src`文件夹中,我们可以创建一个名为`router`的新文件夹,并在文件夹中创建一个名为`index.js`的新文件。在`index.js`文件中,我们可以定义我们的路由。例如,我们可以创建一个名为`LocalApp`的路由,该路由指向一个名为`LocalApp.vue`的组件。 下来,我们需要创建一个名为`LocalApp.vue`的组件。这个组件可以包含一个按钮,用于触发打开电脑本地应用的行为。我们可以使用`window.open()`方法来在浏览器窗口中打开本地应用程序。 最后,我们需要在Vue项目的入口文件中导入Vue Router,并将其配置为Vue的插件。我们可以在`main.js`文件中进行这些操作。 完成上述步骤后,我们可以在终端中运行以下命令来启动Vue应用程序: ``` npm run serve ``` 这将启动一个本地开发服务器,并在浏览器中打开Vue应用程序。用户将能够通过点击按钮来打开电脑本地应用。 以上是使用Vue创建一个静态打开电脑本地应用的简要概述。当然,具体的实现细节可能会根据实际应用的需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值