您的位置:首页 > 移动开发 > Android开发

android 外部调起要注意的地方——是否需要控制访问host

2016-06-23 17:57 435 查看
1.外部调起的实现方式

 外部调起通常我们需要再某个activity上配置相应的data参数即可实现外部调起。

第一,在AndroidManifest.xml中对<activity />标签增加<intent-filter />,如下:

第二,在SchemeActivity中接收并处理Uri请求,实现跳转到不同的Native App页面,获取Uri可以在Activity中通过getIntent().getData()实现,Demo:

第三,在WebApp页面上,通过如下方式使用:

上面的链接看起来和平时看到的链接是不一样的,myscheme:// 这个协议是被注册到android app中的,整个格式都是我们自定义的,当然,也可以改成任意的样子,比如:com.myscheme://a/b/c 。只不过,这个Uri的格式需要提前定义好,要不然在SchemeActivity中无法匹配上。在SchemeActivity中,可以获取到这个Uri,并分段解析,进而启动不同的Activity,实现从WebApp中跳转到Native App的不同页面。

当然,还有一种方法,是通过注册service,并通过ServerSocketChannel去bind一个端口,比如9999,启动该service后,即可在WebApp中通过 http://127.0.0.1:9999 进行访问,当然,根据service的不同实现,可以在后面加一定的path和query,比如:http://127.0.0.1:9999/dealIntent?intent=....&callback=.... 。这种方式比scheme更灵活,但缺点也是很明显的:service长期处于启动状态,耗电是必须要考虑的。

2.如果唤起后加载的是传过来的url,那么此时要注意做下控制了

比如我们的url是myscheme://myhost/open?url=http://www.baidu.com,如果url被第三方换成了他们的url,那么外部唤起有可能访问的就是别人的页面了。所以如果有这种需求的话,要做过滤处理,对url做把控
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: