网页跳转到APP

来源:互联网 发布:the rain 久石让 知乎 编辑:程序博客网 时间:2024/05/02 02:39

先说实现步骤再说原理:


使用步骤

一,首先要给你要打开的应用中的activity设置过滤器(在清单文件里设置)
以JumpActivity为例
如下面的: <intent-filter>  中就是所需过滤器

[html] view plain copy
  1. <activity android:name=".JumpActivity" >    
  2.     <intent-filter>    
  3.         <action android:name="android.intent.action.VIEW" />    
  4.     
  5.     
  6.         <category android:name="android.intent.category.DEFAULT" />    
  7.         <category android:name="android.intent.category.BROWSABLE" />    
  8.     
  9.         <!--下面所设置的质需要和html端对调-->  
  10.         <!--在data里设置了 scheme和host,则该Activity可以接收和处理类似于 "sharetest://data/XXX"的链接-->  
  11.         <data    
  12.             android:host="data"    
  13.             android:scheme="sharetest" />    
  14.     </intent-filter>    
  15. </activity>   

 
二,在JumpActivity中做打开后的处理,用来接收外部的跳转


[java] view plain copy
  1. public class JumpActivity extends Activity{     
  2.     @Override    
  3.     protected void onCreate(Bundle savedInstanceState) {    
  4.         // TODO Auto-generated method stub    
  5.         super.onCreate(savedInstanceState);    
  6.           
  7.         Intent intent = getIntent();//在这个Activity里,我们可以通过getIntent(),来获取外部跳转传过来的信息。  
  8.         String data = intent.getDataString();//接收到网页传过来的数据:sharetest://data/http://www.huxiu.com/  
  9.         String[] split = data.split("data/");//以data/切割data字符串  
  10.         url = split[1]; //就得到:http://www.huxiu.com/(这就是我们需要网页传给我们的数据)  
  11.         。。。然后我们再通过网页打开app的同时就可以用获得的url数据做一些我们需要做的处理  
  12.         比如你在微信里浏览网页时打开自己的安卓app应用的同时,加载一个app内的网页  
  13.     }    
  14.         
  15. }    



三,我们需要找到html前端,让他们在网页中加入:

<iframe src="" style="display:none"></iframe>


如下:index.html

[html] view plain copy
  1. <!DOCTYPE html>    
  2.     <html>    
  3.     <body>    
  4.     <iframe src="sharetest://data/http://www.huxiu.com/" style="display:none"></iframe>    
  5.     </body>    
  6.     </html>    

将index.html放到Assets目录下,在代码里调用Webview加载该Html文件,代码如下:


/*网页打开app*/
[java] view plain copy
  1. public class H5ToAppActivity extends Activity {  
  2.     private String url;  
  3.     private WebView webview;  
  4.   
  5.   
  6.     @Override  
  7.     protected void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.activity_h5_app);  
  10.   
  11.   
  12.         webview = (WebView) findViewById(R.id.webviewh5);  
  13.         url = "file:///android_asset/index.html";  
  14.   
  15.   
  16.         WebSettings wSet = webview.getSettings();  
  17.         wSet.setJavaScriptEnabled(true);  
  18.         webview.loadUrl(url);  
  19.     }  
  20. }  

这样执行以上代码时就可以打开对应的app了。