您的位置:首页 > 其它

手机联系人姓名或号码过长无法导入到SIM卡

2016-09-06 09:32 417 查看
[align=center] 手机联系人姓名或号码过长无法导入到SIM卡[/align]

[DESCRIPTION]

1. 手机联系人姓名较长; 

2. 将此联系人复制到sim卡; 

[结果] 提示导入失败 

[期望] 导入成功,自动剪切联系人姓名到合适长度
 

[SOLUTION]

1. 截取
CopyProcessor.java  (alps\packages\apps\contacts\src\com\mediatek\contacts\list\service)

的copyContactsToSim()方法中的 

    values.put("tag", simTag);   

的前面对simTag进行截取为贵司需要的长度即可。

 

2. 获取不同的SIM/USIM卡可存储姓名(号码)的最大长度
不同的SIM/USIM卡可存储姓名的最大长度有所不同, 贵司可调用以下接口实现:

『4.4 KK之前版本』alps/packages/apps/Phone/src/com/android/phone/PhoneInterfaceManager.java

『4.4 KK』alps/packages/services/telephony/src/com/mediatek/Phone/PhoneInterfaceManagerEx.java

public int[] getAdnStorageInfo(int simId)  



来获取不同的SIM/USIM卡可存储姓名的最大长度. (具体请参看该API实现过程)
------------------------------------------------------------------
使用范例如下:
int sim1id = com.android.internal.telephony.Phone.GEMINI_SIM_1;

int sim2id = com.android.internal.telephony.Phone.GEMINI_SIM_2;

final ITelephony iTel = ITelephony.Stub

               .asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));

int [] readinfo;

// readinfo[2] = 0;  // # max length of number

// readinfo[3] = 0;  // # max length of alpha id (name)
try{

    readinfo=  iTel.getAdnStorageInfo(sim1id);

    if (readinfo== null) {

        Log.i(TAG,"readinfo is null");

    } else {

        Log.i(TAG,"----- readinfo[2] = " + readinfo[2] + "readinfo[3] = " + readinfo[3] );

    }

} catch(RemoteException e) {

    Log.i(TAG, "InterruptedException occured") ;

}

-------------------------------------------------------------------------------------------

另外,readinfo[3]一般为13或14,表示可存储姓名的长度为13或14个字节。

 

可以参照(2)中方法将其封装成一个方法,返回可以保存到SIM卡的最大姓名长度,

然后在CopyProcess.java中按照这个返回值的大小进行截取,

号码截取与此类似,需要使用 readinfo[2] 获得的值。 

// readinfo[2] = 0;  // # max length of number
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息