先说实现步骤再说原理:
使用步骤
一,首先要给你要打开的应用中的activity设置过滤器(在清单文件里设置)
以JumpActivity为例
如下面的: <intent-filter> 中就是所需过滤器
- <activity android:name=".JumpActivity" >
- <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="data"
- android:scheme="sharetest" />
- </intent-filter>
- </activity>
二,在JumpActivity中做打开后的处理,用来接收外部的跳转
- public class JumpActivity extends Activity{
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
-
- Intent intent = getIntent();
- String data = intent.getDataString();
- String[] split = data.split("data/");
- url = split[1];
- 。。。然后我们再通过网页打开app的同时就可以用获得的url数据做一些我们需要做的处理
- 比如你在微信里浏览网页时打开自己的安卓app应用的同时,加载一个app内的网页
- }
-
- }
三,我们需要找到html前端,让他们在网页中加入:
<iframe src="" style="display:none"></iframe>
如下:index.html
- <!DOCTYPE html>
- <html>
- <body>
- <iframe src="sharetest://data/http://www.huxiu.com/" style="display:none"></iframe>
- </body>
- </html>
将index.html放到Assets目录下,在代码里调用Webview加载该Html文件,代码如下:
/*网页打开app*/
- public class H5ToAppActivity extends Activity {
- private String url;
- private WebView webview;
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_h5_app);
-
-
- webview = (WebView) findViewById(R.id.webviewh5);
- url = "file:///android_asset/index.html";
-
-
- WebSettings wSet = webview.getSettings();
- wSet.setJavaScriptEnabled(true);
- webview.loadUrl(url);
- }
- }
这样执行以上代码时就可以打开对应的app了。