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

[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
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值