1、屏蔽输入法的表情符号输入
EditText控件的输入,要求过滤掉表情符号,网上搜只说匹配过滤Emoji符号,比较麻烦,考虑其实直接禁掉表情按钮(变灰)即可。
在设置EditText的输入风格时设置成邮件地址格式即可,对一些特殊的场景可能会有影响(暂未发现),但是当一般的字符输入确是没有影响的。
这样:
edittext.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
2、过滤输入的表情符号
EditText控件输入的表情过滤,仅靠禁止表情按钮是不可行的,有人会以复制表情的方式,直接粘贴过来。最终还是得拿到Emoji的编码范围,进行过滤。具体可查询Emoji表情库,各种编码的对应关系,网上有,这里我识别成Unicode编码。
<span > </span>/**
* 表情符号识别
*/
public boolean containEmoji(String str) {
//表情编码范围
Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
Matcher emojiMatcher = emoji.matcher(str);
if (emojiMatcher.find()) {
return true;
}else {
return false;
}
}
3、data/app-lib/包名-num中-num的含义
data/app-lib/包名-num/xx.so 一般是存放某app的so库等本地文件,
data/app-lib/包名-1,代表最初的存放目录,
data/app-lib/包名-2,代表该app升级覆盖后的存放目录。
4、关于一个WebView的net::ERR_CONNECTION_RESET
本来随手写个demo,简单的很,以前没出过错,今天出现这个问题,查了半天,没找到解决方法,用别人的demo又没事,自己写的就有问题。
最后原来是在shouldOverrideUrlLoading方法中,webview加载的url是我全局的url,不是shouldOverrideUrlLoading方法传入的url参数,一个小细节,弄了半天。
比如输入http://www.baidu.com/,在方法外面loadUrl时,传入百度的url会变成别的url重定向,如果在
shouldOverrideUrlLoading方法中还是用最初的url,它就一直循环调用shouldOverrideUrlLoading,从log看,死循环。以后注意,shouldOverrideUrlLoading方法里用它传入的参数。
5、Android限制只有邮箱软件识别接收的邮件
发送邮件的代码就不多说了,网上一大把。但是发送后,打开邮件时,会发现打开方式连非邮箱软件也列出来了,什么蓝牙,百度云等等。
如果更期望只有专门的邮件软件出现,不相关的软件不列举出来,其实方法也比较简单。
在发送邮件的代码里,通常我们是写的
Intent intent = new Intent(Intent.ACTION_SEND);
将其改成就ok了:
Intent intent = new Intent(Intent.ACTION_SENDTO);
6、针对4.0系统中Home键监听
网上2.3系统的home键监听代码很多,就不记录了。4.0的倒是少点,很多说要改源码,以下方法就不用:
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码
setContentView(R.layout.main);
}
再重写onKey事件即可。