一、网页打开app简介
1. 用户自定义的URI (Custom URI scheme) 形式如下:
scheme://host/path?parameters
2. "intent:"语法(intent -base URI) 语法形式如下:
intent://host#intent;参数;end
二、自定义 Custom Scheme URI
1. 我们先创建一个网页HTMl
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网页打开App</title>
</head>
<body>
<a href="app://app.yuong.com?load_url=www.yuong.com">打开app</a>
</body>
</html>
注 : 在 app://app.yuong.com?load_url=www.yuong.com 中
app是 scheme
app.yuong.com 是 host
load_url=www.yuong.com 是我们需要传递的参数(key和value)
2. 我们创建一个android project 新建一个WebJumpActivity,在AndroidManifest.xml中定义WebJumpActivity的属性,如下:
<activity android:name=".WebJumpActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="app.yuong.com"
android:scheme="app" />
</intent-filter>
</activity>
3. 在WebJumpActivity的 onCreate()方法中获取传递的参数
Intent intent = getIntent();
Uri uri = intent.getData();
if (uri != null) {
Log.e(TAG, "url : " + uri.toString());
String value = uri.getQueryParameter("load_url");
Log.e(TAG, "load_url : " + value);
}
这样通过网页点击链接就可以直接打开我们的app WebJumpActivity界面
二、Intent -based URl
Intent-based URI语法:
1. 首先我们新建一个HTML ,如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网页打开App</title>
</head>
<body>
<a href="intent:app://app.yuong.com#Intent;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;component=com.yuong.demo/.MainActivity;S.load_url=www.yuong.com;end">打开app</a>
</body>
</html>
2. 按Intent-based URI的语法创建链接,我们可以在app项目中通过以下代码:
Intent intent=new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addCategory("android.intent.category.BROWSABLE");
intent.setData(Uri.parse("app://app.yuong.com"));
intent.putExtra("load_url","www.yuong.com");
Log.e(TAG,"URL : "+intent.toURI());
startActivity(intent);
得到日志:app://app.yuong.com#Intent;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;component=com.yuong.demo/.MainActivity;S.load_url=www.yuong.com;end 最后在前面加上“intent:”(不能忘)
3. 在WebJumpActivity的 onCreate()方法中获取传递的参数
Intent intent = getIntent(); Log.e(TAG, "intent base uri : " + intent.toURI()); Log.e(TAG, "data : " + intent.getDataString()); Log.e(TAG, "is exist load_url : " + intent.hasExtra("load_url")); Log.e(TAG, "load_url : " + intent.getStringExtra("load_url"));
这样通过这种方式也可以打开我们的app WebJumpActivity,相对第一种复杂一些