JS唤醒Android APP(包括在外部浏览器和WebView)

1.AndroiManifest.xml中配置

请在App启动的第一个Activity的那个节点中加入

<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="arseeds.com"       
                                       android:scheme="zhaojian"/>
</intent-filter>

例如我是以GuideActivity为第一个启动的Activity,配置如下

<activity android:name=".base.activity.GuideActivity">   
 <intent-filter>        
<action android:name="android.intent.action.MAIN"/>        
<category android:name="android.intent.category.LAUNCHER"/>    
</intent-filter>   
 <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="arseeds.com"         
   android:scheme="zhaojian"/> 
   </intent-filter>
</activity>

data中的host和scheme可以自定义

2.在浏览器中唤醒APP

需要在第一个启动的Activity中的onCreate中加入

          Intent intent = getIntent();
          Uri uri = intent.getData();
        if (uri != null) {     
        String pid = uri.getQueryParameter("pid");  
        }

pid为自定义链接的参数,如果仅仅只是唤醒APP,就可以忽略此步骤

3.在WebView中的唤醒

需要在WebView中配置

webView.setWebViewClient(new WebViewClient(){ 
            @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { 
                    Uri uri=Uri.parse(url);
                   if(uri.getScheme().equals("zhaojian")&&uri.getHost().equals("arseeds.com")){ 
                            String arg0=uri.getQueryParameter("arg0");
                           String arg1=uri.getQueryParameter("arg1"); 
                      }else{ 
          view.loadUrl(url); 
        } return true; 
}});

拿到了参数,剩下的就不用我说了

4.最重要的是在html中的配置


<html>
       <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
                      <title>Insert title here</title>
       </head> 
        <body> 
                  <a href="zhaojian://arseeds.com/?pid=1">打开app</a><br/>
           </body></html>

OK,就这么简单

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 124,469评论 16 534
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 70,462评论 12 116
  • 最近刚从旧公司离职,为面试在做准备,因为平时开发CV大法用得比较多,很多基础知识掌握得不是很牢靠以及很多工具框架只...
    黎清海阅读 677评论 1 14
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 2,767评论 0 4
  • 复杂的软件必须有清晰合理的架构,否则无法开发和维护。 MVC(Model-View-Controller) 是最常...
    流沙麒麟客阅读 155评论 0 1