Android应用安全开发之浅谈网页打开

一、网页打开APP简介

Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布其AppLinkSDK,开发者需要申请相应的资格,配置相关内容才能使用。这些都是通过用户自定义的URIscheme实现的,不过背后还是Android的Intent机制。Google的官方文档《AndroidIntentswithChrome》一文,介绍了在AndroidChrome浏览器中网页打开APP的两种方法,一种是用户自定义的URIscheme(CustomURIscheme),另一种是“intent:”语法(Intent-basedURI)。

第一种用户自定义的URIscheme形式如下:

第二种的Intent-basedURI的语法形式如下:

因为第二种形式大体是第一种形式的特例,所以很多文章又将第二种形式叫IntentSchemeURL,但是在Google的官方文档并没有这样的说法。

注意:使用CustomURIscheme给APP传递数据,只能使用相关参数来传递数据,不能想当然的使用scheme://host#intent;参数;end的形式来构造传给APP的intent数据。详见.1节的说明。

此外,还必须在APP的Androidmanifest文件中配置相关的选项才能产生网页打开APP的效果,具体在下面讲。

二、CustomSchemeURI打开APP■.1基本用法

需求:使用网页打开一个APP,并通过URL的参数给APP传递一些数据。

如自定义的Scheme为:

注意:uri要用UTF-8编码和URI编码。

网页端的写法如下:

APP端接收来自网页信息的Activity,要在Androidmanifest.xml文件中Activity的intent-filter中声明相应action、category和data的scheme等。

如在MainActivity中接收从网页来的信息,其在AndroidManifest.xml中的内容如下:

在MainActivity中接收intent并且获取相应参数的代码:

另外还有以下几个API来获取相关信息:

getIntent().getScheme();//获得Scheme名称

getIntent().getDataString();//获得Uri全部路径

getIntent().getHost();//获得host

■.风险示例

常见的用法是在APP获取到来自网页的数据后,重新生成一个intent,然后发送给别的组件使用这些数据。比如使用Webview相关的Activity来加载一个来自网页的url,如果此url来自urlscheme中的参数,如:jaq://jaq.alibaba.







































昆明专业白癜风医院
请问盖百霖的副作用有哪些



转载请注明:http://www.guyukameng.com/html/10930.html