Android URL Scheme唤醒之门

1、scheme的作用

Android的scheme 是一种页面内跳转协议。通过scheme 可以进行页面跳转,可以是app之间的跳转,
也可以是网页和app之间的跳转。

2、scheme的定义

协议://协议地址/端口/路径/参数
scheme://nade/startapp?data="123456"

协议:scheme(可以自定义)
协议地址:(可以自定义)
端口:(可以自定义)
路径:
参数:

3、scheme的使用

1、app内使用:
/**
* scheme跳转
* @param s
*/
private void schemeJump(String s) {
if (!checkScheme(s)) {
showToast("页面不存在");
}
Intent schemeIntent = new Intent(Intent.ACTION_VIEW);
schemeIntent.setData(Uri.parse(s));
startActivity(schemeIntent);
}

2、网页内使用

// h5调用
app目标页面

3、app解析处理

Intent intent = getIntent();
if (intent.getData() != null) {
Uri uri = intent.getData();
//获取uri链接
LogUtils.d("nade",uri.toString());
//获取协议
LogUtils.d("nade",uri.getScheme());
//获取协议链接
LogUtils.d("nade",uri.getHost());
//获取端口
LogUtils.d("nade",String.valueOf(uri.getPort()));
//获取路径
LogUtils.d("nade",uri.getPath());
//获取参数
LogUtils.d("nade",uri.getQueryParameter("data"));
//获取参数集合
for (String data : uri.getQueryParameters("data")) {
LogUtils.d("nade",data);
}
}

/**
* 检测scheme链接是否可用
* @param s
* @return
*/
public boolean checkScheme(String s){
PackageManager manager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(s));
List uris = manager.queryIntentActivities(intent, PackageManager.GET_RESOLVED_FILTER);
return uris != null && uris.size() > 0;
}

你可能感兴趣的:(Android URL Scheme唤醒之门)