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事件即可。