美文网首页
安卓IMEI智能格式化

安卓IMEI智能格式化

作者: Master_文 | 来源:发表于2017-09-09 20:52 被阅读0次
今天朋友让我帮忙搞个Imei的格式,我想这还不简单,一顿猛敲后,发现丫的光标位置好坑,现在我记录下我的思路,如果有不好的地方或有待改进的地方,还请各位大佬下面留言,先来个效果图
1.gif
下面是代码
package com.gongwenbo.demo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
/**
 * Imei智能格式填补 12:34:56
 */
public class ImeiActivity extends AppCompatActivity {

    private EditText mEt;
    private int      preLength;
    private boolean flagAfter = true;   
    private boolean flag      = true;
    int index = 0;
    private static final String TAG = "ImeiActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_imei);
        mEt = (EditText) findViewById(R.id.et);
        mEt.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                // 获取光标的位置
                index = mEt.getSelectionStart();
            }
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }
            @Override
            public void afterTextChanged(Editable editable) {
                String content = editable.toString();
                // 判断是添加还是删除,此处要获取第一次的值,因为重新赋值了,他还会走一次
                if (flagAfter) {
                    flag = preLength > content.length() ? true : false;
                }
                flagAfter = !flagAfter;
                // 判断值是否一样,防止死循环
                if (preLength == content.length()) {
                    return;
                }
                // 添加格式,我的是 12:34:45 自行添加
                content = content.replace(":", "");
                char[] chars = content.toCharArray();
                StringBuilder stringBuilder = new StringBuilder();
                for (int i = 0; i < chars.length; i++) {
                    stringBuilder.append(chars[i]);
                    if (i % 2 == 1 && i != chars.length - 1) {
                        stringBuilder.append(":");
                    }
                }
                preLength = stringBuilder.length();
                String msg = stringBuilder.toString();
                mEt.setText(msg);
                // 防止数组越界
                if (index > preLength) {
                    index = preLength;
                }
                // 如果是添加的话,光标要往后移1
                if (!flag && index >= 1 && msg.toCharArray()[index - 1] == ':') {
                    index = index + 1;
                }
                // 设置光标的位置
                mEt.setSelection(index);
            }
        });
    }
}

相关文章

  • 安卓IMEI智能格式化

    今天朋友让我帮忙搞个Imei的格式,我想这还不简单,一顿猛敲后,发现丫的光标位置好坑,现在我记录下我的思路,如果有...

  • 安卓10适配

    1.安卓10获取不到IMEI信息,使用以下代码获取 2.安卓10获取不到系统文件解决方法,在manifest.xm...

  • 乐视电视如何安装蜜蜂市场?

    ​智能电视都是通过使用安卓智能系统,然后运行安卓智能电视软件来实现享用智能电视的。如若想在智能电视上安装应用有两种...

  • 安卓如何针对不同的安卓版本声明不同的权限

    背景 安卓10开始,普通App就获取不到IMEI了,即使声明了READ_PHONE_STATE权限,也获取不到。但...

  • 获取手机唯一标识符

    安卓设备没有唯一性可言,根据需求选择使用不同的标示符或组合方式。 需要权限:IMEI:(International...

  • Tasker - 让你的智能手机更智能

    Tasker是一款安卓系统增强神器,它可以让你的安卓智能手机变得更加智能! Tasker可用于根据一定的条件(应用...

  • 如何正确获取IMEI及MEID

    在项目支持的时候,由于后台需要记录日志,而记录日志就或多或少的需要获得手机的IMEI来做标示。在安卓系统版本的迭代...

  • 快桌面(安卓桌面管理应用)

    项目背景 随着安卓智能手机用户的不断增加,用户对安卓手机系统的个性需求表现更多的差异化。 安卓手机的硬件设备差异化...

  • 安卓获取OAID方法

    背景 安卓10及以上,不再支持获取imei,但是各个app还是需要获取一个唯一的设备id,那怎么办? 工信部牵头搞...

  • 2017年学习安卓开发还有前途吗?

    2017年学习安卓开发还有前途吗? 安卓开发工程师的需求 随着采用Android系统的手机、平板电脑、智能电视等数...

网友评论

      本文标题:安卓IMEI智能格式化

      本文链接:https://www.haomeiwen.com/subject/bluajxtx.html