html唤醒activity页面,Android中通过Js唤起Activity

编程入门 行业动态 更新时间:2024-10-19 11:52:19

html唤醒activity<a href=https://www.elefans.com/category/jswz/34/1771336.html style=页面,Android中通过Js唤起Activity"/>

html唤醒activity页面,Android中通过Js唤起Activity

通过网页唤起一个app这样的场景有很多, 我们来看看如何实现这样的一个功能.

通过html启动Activity的原理是js代码运行了Url去匹配对应的Activity. 我们可以通过配置Activity的intent-filter来匹配一个Url.

android:host="eric"

android:scheme="schemedemo"

/>

data部分就是在构造一个匹配的Url, 启动比较常用的几个字段:

一个网址::8080/question?name=google&page=1

scheme : 协议名,如同上面的 https.

host : 域名,zhidao.baidu

port : 端口号

parh : 路径 , question

query parameter : 查询参数,name=google&page=1

这里Activity的data部分你都可以自定义,以达到唯一匹配,下面我们来看看如果通过js代码启动它.

这里我们通过WebView去加载一段html, 从html跳转一个指定Activity来示范一下.

先完成一段启动该Activity的Js代码

WEB唤起原生APP

Simple Launch with parameters

(function(){

var ua = navigator.userAgent.toLowerCase();

var t;

var config = {

/*scheme:必须*/

scheme_IOS: 'schemedemo://',

scheme_Adr: 'schemedemo://eric/test/scheme?name=google&page=1',

download_url: document.getElementById('download-app').value,

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);

})()

下面再来在webview中加载该js

public class MainActivity extends AppCompatActivity {

private WebView mWebView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mWebView = findViewById(R.id.web_view);

mWebView.loadUrl("file:///android_asset/callback.html");

}

}

注意我的html文件放在了这里

image.png

SchemeActivity这个画面布局如下

public class SchemeActivity extends AppCompatActivity {

TextView tv_data;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_scheme);

tv_data = findViewById(R.id.tv_data);

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_data.setText(sb.toString());

}

}

启动该webview的工程.

image.png

接着点击Simple Launch with parameters按钮,就会通过Url schemedemo://eric:8080/test/scheme?name=google&page=1匹配到SchemeActivity, 并实现跳转.

image.png

更多推荐

html唤醒activity页面,Android中通过Js唤起Activity

本文发布于:2024-03-10 08:36:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727487.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:页面   activity   html   Activity   Js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!