在手机浏览器启动你的app

最近,在使用QQ和微信等SDK来实现分享网页的时候,发现,SDK已经为页面跳转回应用提供了基本的数据支持。咱们只需在应用里和被分享的网页进行简单的设置,便可实现此功能。html

那么咱们先来看下网页跳转回应用的实现原理。java

就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式以下: 
scheme://host:port/path 
举个实际的例子: 
content://com.example.project:200/folder/subfolder/etc 
\---------/  \---------------------------/ \---/ \--------------------------/ 
scheme                 host               port        path 
                \--------------------------------/ 
                          authority    

如今你们应该知道data flag中那些属性的含义了吧,看下data flag 
<data android:host="string" 
      android:mimeType="string" 
      android:path="string" 
      android:pathPattern="string" 
      android:pathPrefix="string" 
      android:port="string" 
      android:scheme="string" /> 
android

如下是测试示例的实现步骤:浏览器

1. 新建一个工程A,并实现一个Activity,用来接收外部的跳转。代码以下:微信

public class JumpActivity extends Activity{


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		Intent intent = getIntent();
		
		String data = intent.getDataString();
		System.out.println(data);
	}
	
}

在这个Activity里,咱们能够经过getIntent(),来获取外部跳转传过来的信息。ide

2.  修改ManiFest文件,设置Activity的接收Action的属性,代码以下:测试

<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:scheme="sharetest" android:host="data" />
    </intent-filter>
</activity>

如上所示,在data里设置了 scheme和host,则该Activity能够接收和处理相似于 "sharetest://data/XXX"的连接。spa

3. 接下来咱们能够写一个网页的代码,因为浏览器在接收到本身不能处理的Uri时,会自动的调用发送Intent来调用可以处理该Uri的应用。code

如下是网页的代码:orm

<!DOCTYPE html>
<html>
<body>
<iframe src="sharetest://data/123" style="display:none"></iframe>
</body>
</html>

4. 在手机浏览器里访问此页面,能够发现:JumpActivity会自动被打开。以下图所示:在Intent中能够去到网页里发出的连接:sharetest://data/123。

经过以上的4步,相信你们都了解如何让应用接收和处理某种Uri消息。所以,只要咱们

1. 在ManiFest里为Activity申明接收并处理某种Uri

2. 在页面中添加如下代码:其中,l为符合Activity处理规则的Uri地址。

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

就能够让已安装该应用的用户在打开该网页的时候,自动的跳转到应用内部。

相关文章
相关标签/搜索