android采用Chrome Intent方式实现从浏览器启动应用

在很多应用中需要我们从浏览器中直接启动应用,而网上大多数采用的是scheme的方式,即在启动activity的mainfest文件中配置如下字段:

  
    
    
    
    
  

然后在网页的连接设置为example://test/… 来启动应用,但是如果手机中没有应用,该url会跳转到一个错误的界面。

google官方在chrome中推出了一种Android Intents的方式来实现应用启动,通过在iframe中设置src为

intent:HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string]; 
scheme=[string];
end;

的方式,具体示例如下。

我们定义一个a标签为

Do Whatever
 
  
 
   
  然后在mainfest文件中定义要启动的activity 
  

            
                
                
                
                
            
然后在浏览器中点击a标签,就可以启动应用程序的对应activity了,如果手机中没有相应的应用,那么是否会跳转到错误页面呢,将a标签设置为
Do Whatever

这样如果没有对应应用,该链接就会跳转到S.browser_fallback_url指定的url上。

如果我们还需要对在a标签中对指定activity进行传值呢?那也有办法,参考stackoverflow上面的一个回答点击打开链接,将a标签设置为

Do Whatever
其中参数的类型如下
String => 'S'
Boolean =>'B'
Byte => 'b'
Character => 'c'
Double => 'd'
Float => 'f'
Integer => 'i'
Long => 'l'
Short => 's'

然后在启动activity的onCreate函数中利用bundle接收参数就行了
Bundle parametros = getIntent().getExtras();
if (extras != null){
    String name = extras.getString("name");
    Integer age = extras.getInt("age");

    if (name!=null && age!=null)
    {
       //do whatever you have to
       //...
    }
}else{
     //no extras, get over it!!
}

至此,通过浏览器启动app就大功告成了,但是需要注意的是,很多第三方浏览器会拦截掉chrome intent启动应用的请求,像uc,微信内置浏览器,QQ浏览器等,在这些页面要做一个提示,让用户跳转到源生的浏览器上才能打开应用。



你可能感兴趣的:(android采用Chrome Intent方式实现从浏览器启动应用)