H5无法调起android app的坑之scheme大小写
项目中遇到的坑,此处记录一下,也为大家提个醒。
- 在manifest 文件中配置h5打开activity的scheme和host
js
<activity
android:name=".MainActivity"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/AppThemeNoActionBar">
<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="host"
android:scheme="myApp" /> <!--此处有坑,勿效仿,请阅读下文-->
</intent-filter>
</activity>- 在html中的简单调用
html
<!Doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>my test</title>
</head>
<body>
<a href="myApp://main">click me to jumpping to the main page </a>
</body>
</html>此处h5 的调用方式确认无误,可参考。
- 遇到的问题
text
html无论如何也调不起app,排查了各种原因,仔细核对了 scheme 和 host 都和h5
的一样,却就是调不起来。- 解决问题 震惊!我无意中看到了这样一幕,彻底让我茅塞顿开… 于是,我在android的manifest中配置filter时,把scheme改为小写,测试之后欣然发现 bug解了,app调起来了~
js
<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="host"
android:scheme="myapp" /> <!--此处需要用全小写-->
</intent-filter>后来因为好奇,测试了一下,不仅仅是scheme,host 也会被转为小写,所以在manifest中配置时,scheme 和 host 都要全为小写。