androidの编辑联系人,姓名颠倒bug

来源:互联网 发布:windows官方镜像 编辑:程序博客网 时间:2024/05/17 23:50

           androidの编辑联系人,姓名颠倒bug

            解bug时,碰到在sim或是在本机中新建联系人,一种情况是名称为数字时,若数字中间加空格后保存,

联系人姓名显示就会颠倒过来 .android2.3

【预置条件】无
【操作步骤】联系人--添加联系人--姓名栏内输入数字--空格--继续输入数字--保存--查看
【实际结果】空格后输入的数字显示在空格前输入的数字的前面
【预期结果】应空格前输入的数字显示在前面
  例:输入时(2222空格3333)  保存后显示(33332222)

 

原因:名字为数字并且有空格时,按照英文格式存储,就会出现倒置,存储方式是:名 姓,

解决办法:针对(android2.3) 4.0以上没仔细看是否这样的,

文件路径:packages/providers/ContactsProvider/src/com/android/providers/contacts/NameSplitter.java
             其中有一个guessFullNameStyle() (类中两个同名称方法,很好辨别)

             if (Character.isLetter(codePoint))    换为

             if (Character.isLetterOrDigit(codePoint)) ,即方法改下Character.isLetterOrDigit()

*******************************************************************************************************************************************************************

Character.isLetterOrDigit(int codePoint)

方法 描述:

java.lang.Character.isLetterOrDigit(int codePoint) 确定指定字符(Unicode代码点)是一个字母或数字。

被认为是一个字符是字母或数字,如果任isLetter(代码点)或isDigit的字符(代码点)返回true。
声明

以下是java.lang.Character.isLetterOrDigit()方法的声明

public static boolean isLetterOrDigit(int codePoint)

参数

    codePoint - the character (Unicode code point) to be tested

返回值

此方法返回true,如果字符是字母或数字,否则返回false。
异常

    NA

实例

下面的例子说明了如何使用lang.Character.isLetterOrDigit()方法。

package com.yiibai;

import java.lang.*;

public class CharacterDemo {

   public static void main(String[] args) {

      // create 2 int primitives cp1, cp2
      int cp1, cp2;

      // assign values to cp1, cp2
      cp1 = 0x0033;
      cp2 = 0x012b23;

      // create 2 boolean primitives b1, b2
      boolean b1, b2;

      /**
       *  check if cp1, cp2 represents letter/digit and
       *  assign results to b1, b2
       */
      b1 = Character.isLetterOrDigit(cp1);
      b2 = Character.isLetterOrDigit(cp2);

      String str1 = "cp1 represents a letter/digit is " + b1;
      String str2 = "cp2 represents a letter/digit is " + b2;

      // print b1, b2 values
      System.out.println( str1 );
      System.out.println( str2 );
   }
}

产生结果:

cp1 represents a letter/digit is true
cp2 represents a letter/digit is false

原创粉丝点击