手機聯繫人姓名或號碼過長無法導入到SIM卡

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章