前言
相信你在看此文之前已经发现有不少APP可以在网页被唤起,比如我们所见的QQ,我的世界,拼多多,支付宝,微信等程序,可以被外部网页拉起响应。没错,我就是因为这个才做这个文章,因为我也在自己的APP里实现了它。因为我也刚学Android,许多东西不懂,如果说错了欢迎指正,有缺失欢迎补全。
教程
Scheme
Android中的Scheme是一种页面跳转协议,和网站通过URL的形式访问一样,APP同样可以通过这种方式进行跳转,它可以很方便的满足我们在一些场景中的需求。
有了上面的解释,想必大家已经迫不及待的为自己的APP加入这个功能,因为它的应用场景较为广,来看看我们应该如何配置这一个功能。
AndroidManifest.xml
我们需要在这里配置一下intent-filter,这样我们可以实现一个过滤器,下面以我的程序BILIBILI AS的配置方法来作为例子。
<activity
android:name=".as.VideoAsActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/*"/>
</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="imcys"
android:path="/main"
android:port="2333"
android:scheme="bilibilias"/>
</intent-filter>
</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="imcys"
android:path="/main"
android:port="2333"
android:scheme="bilibilias"/>
</intent-filter>
intent-filter里的action,category是必须要带的,而data可以帮助我们过滤网页中的启动链接。如果按上方法写,那么你的链接应该是下面的
bilibilias://imcys:2333/main
我们不难发现,上面data中配置的属性和链接是对应的,通过查询网页,我发现data可以配置下面的东西。
<data android:host=""
android:mimeType=""
android:path=""
android:pathPattern=""
android:pathPrefix=""
android:port=""
android:scheme=""
android:ssp=""
android:sspPattern=""
android:sspPrefix=""/>
这个就需要你自己去摸索了
Activity
接下来我们写Java文件,获取在网页传回的内容
if (null != intent && null != intent.getData()) {
// uri 就相当于 web 页面中的链接
//下面是获取刚刚data的配置
Uri uri = intent.getData();
String scheme = uri.getScheme();
String host = uri.getHost();
int port = uri.getPort();
String path = uri.getPath();
//video相当于在链接当中的键(key)
String bvid = uri.getQueryParameter("video");
}
如果我们的链接是这样的
bilibilias://imcys:2333/main?video=av10086
那么按上代码bvid就为av10086
我们在网页这样写,就可以轻松跳转APP的activity
<a href="bilibilias://imcys:2333/main?video=av10086">跳转到AV10086</a>
尾巴
不知道你有没有看懂,如果没有看懂可以去看看网上其他的教程。
下面我们来测试这一成果,点击下面按钮,跳转BILIBILI AS,当然这需要1.0.8版本,过两天我可能在这里发布链接。
发表回复