在很多应用中需要我们从浏览器中直接启动应用,而网上大多数采用的是scheme的方式,即在启动activity的mainfest文件中配置如下字段:
1 | <activity android:name="com.example.MainActivity"> |
然后在网页的连接设置为example://test/… 来启动应用,但是如果手机中没有应用,该url会跳转到一个错误的界面。
google官方在chrome中推出了一种Android Intents的方式来实现应用启动,通过在iframe中设置src为的方式,具体示例如下。
1 | intent:HOST/URI-path // Optional host |
我们定义一个a标签为
1 | <pre name="code" class="html"><pre name="code" class="html"><a href="intent://zhangmiao/#Intent;scheme=myapp;package=com.what.ever.myapp;end">Do Whatever</a> |
然后在mainfest文件中定义要启动的activity
1 | <activity android:name=".TestUrlScheme" > |
然后在浏览器中点击a标签,就可以启动应用程序的对应activity了,如果手机中没有相应的应用,那么是否会跳转到错误页面呢,将a标签设置为
1 | <a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">Do Whatever</a> |
这样如果没有对应应用,该链接就会跳转到S.browser_fallback_url指定的url上。
其中参数的类型如下
1 | String => 'S' |
1 | intent://RequestType/?name=zhangmiao&age=18#Intent;scheme=appname;package=com.example.appname;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end |
然后在启动activity的onCreate函数中利用bundle接收参数就行了
1 | Bundle parametros = getIntent().getExtras(); |