Android
Android

qemu 出错解决办法

运行qemu的时候提示134错误。百度搜索了一下发现没有这方面的解决文章。于是只能自己解决了。方法很简单,如下更改Graphics模式就可以了。

屏幕快照 2018-03-11 下午6.17.36.png

Android 调用系统文字分享

QQ图片20180309141506.png

实现代码如下:

Intent StringIntent = new Intent(Intent.ACTION_SEND);
StringIntent.setType("text/plain");
StringIntent.putExtra(Intent.EXTRA_TEXT, ShareStr);
this.startActivity(Intent.createChooser(StringIntent, "分享")); // 创建选择器

第一条语句:

Intent StringIntent = new Intent(Intent.ACTION_SEND);

这句话的意思是新建一个Intent类对象,注意这里给它传递了一个参数ACTION_SEND。

这一个参数类型是文本型(String)其具体数值为:"android.intent.action.SEND"。

官网解释:ACTION_SEND : Activity Action: Deliver some data to someone else.  意思大概是将一些数据提供给其它的App。

第二条语句:

StringIntent.setType("text/plain");

函数原型:

Intent setType(String type) 'Set an explicit MIME data type.

这句话的意思是设置MIME类型。MIME类型包括如下:

常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar

我们这里要设置的意图类型是文本型,所以选择“text/plain”。但是要注意setType是区分大小写的。所以要特别注意一下。

第三条语句:

StringIntent.putExtra(Intent.EXTRA_TEXT, ShareStr);

putExtra是复写的函数,所以它有很多定义,有的是两个参数,有的是一个参数。有的第二个参数类型不一样。这个要注意一下。但是大致也可以看的出,第一个参数是定义你往意图(Intent)上附加(Extra)数据的类型。这里传入的参数是Intent.EXTRA_TEXT。很明显这是一个android提供的常量数据。

官网解释:EXTRA_TEXT:A constant CharSequence that is associated with the Intent, used with ACTION_SEND to supply the literal data to be sent.
(大致意思:与ACTION_SEND一起用于提供要发送的文字数据。)

第四条语句:

this.startActivity(Intent.createChooser(StringIntent, "分享"));

这一条语句相当简单,实际就是打开一个活动视图。注意这个视图是通过createChooser函数创建的,看名知意。这个函数是创建了一个选择器。第一个参数类型是Intent,第二个类似一个标题的文本型数据。


总结一下:首先新建一个意图类型。然后设置意图的附加数据类型(MIME类型)。第三步依照设置的数据类型添加数据。最后创建一个选择器,将意图分发出去。

特别注意:setType这个函数,在官网有这么一句话:This method automatically clears any data that was previously set (for example by setData(Uri)).

大致意思:此方法会清楚你前面所有设置的数据,例如用setData设置的Uri数据。所以这个函数的使用必须在putExtra前面。

Intent介绍http://android.xsoftlab.net/reference/android/content/Intent.html


微信双开

Screenshot_2018-02-04-22-37-02.png



最新版本的微信支持双开。


Screenshot_2018-02-04-22-36-34.png



Android 克隆账户

http://www.cnvd.org.cn/webinfo/show/4365


瞻仰并学习一下,感觉这个“漏洞”不是一个漏洞。仅仅只是程序员自己写程序的问题,没有把google给的便利给控制好,或者说太“贪心”。


原文:

安全公告编号:CNTA-2018-0005

2017年12月7日,国家信息安全漏洞共享平台(CNVD)接收到腾讯玄武实验室报送的Android WebView存在跨域访问漏洞(CNVD-2017-36682)。攻击者利用该漏洞,可远程获取用户隐私数据(包括手机应用数据、照片、文档等敏感信息),还可窃取用户登录凭证,在受害者毫无察觉的情况下实现对APP用户账户的完全控制。由于该组件广泛应用于Android平台,导致大量APP受影响,构成较为严重的攻击威胁。

一、漏洞情况分析

WebView是Android用于显示网页的控件,是一个基于Webkit引擎、展现web页面的控件。WebView控件功能除了具有一般View的属性和设置外,还可对URL请求、页面加载、渲染、页面交互进行处理。

该漏洞产生的原因是在Android应用中,WebView开启了file域访问,且允许file域对http域进行访问,同时未对file域的路径进行严格限制所致。攻击者通过URL Scheme的方式,可远程打开并加载恶意HTML文件,远程获取APP中包括用户登录凭证在内的所有本地敏感数据。


漏洞触发成功前提条件如下:

1.WebView中setAllowFileAccessFromFileURLs 或setAllowUniversalAccessFromFileURLsAPI配置为true;

2.WebView可以直接被外部调用,并能够加载外部可控的HTML文件。

CNVD对相关漏洞综合评级为“高危”。

二、漏洞影响范围

漏洞影响使用WebView控件,开启file域访问并且未按安全策略开发的Android应用APP。

三、漏洞修复建议

厂商暂未发布解决方案,临时解决方案如下:

1. file域访问为非功能需求时,手动配置setAllowFileAccessFromFileURLs或setAllowUniversalAccessFromFileURLs两个API为false。(Android4.1版本之前这两个API默认是true,需要显式设置为false)

2. 若需要开启file域访问,则设置file路径的白名单,严格控制file域的访问范围,具体如下:

(1)固定不变的HTML文件可以放在assets或res目录下,file:///android_asset和file:///android_res 在不开启API的情况下也可以访问;

(2)可能会更新的HTML文件放在/data/data/(app) 目录下,避免被第三方替换或修改;

(3)对file域请求做白名单限制时,需要对“../../”特殊情况进行处理,避免白名单被绕过。

3. 避免App内部的WebView被不信任的第三方调用。排查内置WebView的Activity是否被导出、必须导出的Activity是否会通过参数传递调起内置的WebView等。

4. 建议进一步对APP目录下的敏感数据进行保护。客户端APP应用设备相关信息(如IMEI、IMSI、Android_id等)作为密钥对敏感数据进行加密。使攻击者难以利用相关漏洞获得敏感信息。


可以看到上述问题主要是一个WebView控件引起的,但是Google明明已经提供接口设置更严密的使用策略,为什么还要这样。一般开发的时候实际除了浏览器以为外部调用实际可以禁止掉。但是有些App还要自己充当浏览器,那就是zuo的节奏。


WebView暴露的接口:

setAllowFileAccessFromFileURLs:允许访问本地资源(App自身)

setAllowUniversalAccessFromFileURLs:允许访问其他域资源例如http这种协议。


实际还要有一个前提:默认打开网址的App非浏览器。(我的手机没这个功能)。


原理:App获取网址->WebView解析渲染->File域->获取本地资源->上传资源。


另一部手机:获取资源->填充到相应App资源目录内。

Android SwipeLayout position 位置错乱

public View generateView(int position, ViewGroup parent) {}

一般我们都习惯在上述代码中进行事件绑定。实际这一做法是有误的,将会导致点击后获取的position不对。正确的绑定做法是在下面这个接口中绑定。

阅读全文»