tối nay em phải về quê hưởng tết nên có gì bác cứ để lên topic này nhé, em onl 3G nên sida lắm không chat được tết không có việc gì lại ngồi nhà mày mò fix thôi :">
Trời ơi tết nhất rồi bận tối mặt ra chẳng ngồi máy tính được tới 30 phút. Chờ đó anh kiếm 1 máy e100 ngồi xử lí cho tiện.
bác tedofu_katozi đâu rồi vào thảo luận tiếp nào ~.~ logcat mới hình như bị chặn ở chỗ này I/MsgDebug( 1089): SmsDispatcher : GetSeptetCount = 160, totalbyte = 140
Chuẩn nó rồi đấy. Xóa béng cái header đi. Cứ cái nào có "stringToGsm7BitPackedWithHeader" thì xóa. pack lại không sợ lỗi
Logcat mới đẹp quá. (paramString3, arrayOfByte2, 0, 0); Từ từ ăn nốt tết đi đã. Còn sớm mà. Nghiên cứu chậm rãi mới chắc ăn đươc. Mình sắp được tiếp cận nhiều nhiều e100 rồi hi hi sẽ cùng chung tay nghiên cứu.
em đang xem cái file fix s200 bên tinh tế không biết cha nào làm mà sửa hết sạch cứ như là edit java chứ không phải smali, viết lại hoàn toàn function, thêm function encoding utf8, xóa hoàn toàn function encode_KSC5601 và các chỗ có function này đến cả số thứ tự các biến label cũng đánh số lại luôn :| chứ không phải sửa sang tí tí như anh em mình :|
bên đấy chỉ up file, chứ không biết là ai sửa :| cho anh em mở mang chút Bản gốc Mã: public static SmsMessageBase.TextEncodingDetails calculateLength(CharSequence paramCharSequence, boolean paramBoolean) { SmsMessageBase.TextEncodingDetails localTextEncodingDetails = GsmAlphabet.countGsmSeptets(paramCharSequence, paramBoolean); String str; if (localTextEncodingDetails == null) { localTextEncodingDetails = new SmsMessageBase.TextEncodingDetails(); str = paramCharSequence.toString(); } int i; try { int j = encode_KSC5601(str).length; if (MsgLog) Log.i("MsgDebug", "calculateLength() string : octets = " + j); localTextEncodingDetails.codeUnitCount = j; if (j > 140) localTextEncodingDetails.msgCount = ((j + 133) / 134); for (localTextEncodingDetails.codeUnitsRemaining = (134 * localTextEncodingDetails.msgCount - j); ; localTextEncodingDetails.codeUnitsRemaining = (140 - j)) { localTextEncodingDetails.codeUnitSize = 4; if (MsgLog) Log.i("MsgDebug", "calculateLength() ted.toString : " + localTextEncodingDetails.toString()); return localTextEncodingDetails; localTextEncodingDetails.msgCount = 1; } } catch (UnsupportedEncodingException localUnsupportedEncodingException) { i = 2 * paramCharSequence.length(); Log.e("MsgDebug", "Implausible UnsupportedEncodingException EUC_KR", localUnsupportedEncodingException); localTextEncodingDetails.codeUnitCount = paramCharSequence.length(); if (i <= 140) break label243; } localTextEncodingDetails.msgCount = ((i + 133) / 134); for (localTextEncodingDetails.codeUnitsRemaining = ((134 * localTextEncodingDetails.msgCount - i) / 2); ; localTextEncodingDetails.codeUnitsRemaining = ((140 - i) / 2)) { localTextEncodingDetails.codeUnitSize = 3; break; label243: localTextEncodingDetails.msgCount = 1; } } Bản fix Mã: public static SmsMessageBase.TextEncodingDetails calculateLength(CharSequence paramCharSequence, boolean paramBoolean) { SmsMessageBase.TextEncodingDetails localTextEncodingDetails = GsmAlphabet.countGsmSeptets(paramCharSequence, paramBoolean); int i; if (localTextEncodingDetails == null) { localTextEncodingDetails = new SmsMessageBase.TextEncodingDetails(); i = 2 * paramCharSequence.length(); localTextEncodingDetails.codeUnitCount = paramCharSequence.length(); if (i <= 160) break label80; localTextEncodingDetails.msgCount = ((i + 152) / 153); } for (localTextEncodingDetails.codeUnitsRemaining = ((153 * localTextEncodingDetails.msgCount - i) / 2); ; localTextEncodingDetails.codeUnitsRemaining = ((160 - i) / 2)) { localTextEncodingDetails.codeUnitSize = 3; return localTextEncodingDetails; label80: localTextEncodingDetails.msgCount = 1; } } thêm function Mã: public static boolean getEncodableGsm7bitForSubmitBody(String paramString) { int i; if (SkyMsgConfig.isKTUiccCard()) i = 128; while (true) { Log.e("SmsMessage", "=== start - getEncodableGsm7bitForSubmitBody==="); try { byte[] arrayOfByte = paramString.getBytes("utf-8"); int j = arrayOfByte.length; Log.e("SmsMessage", "getEncodableGsm7bit,getBytes" + j); if (j > 0) if (!GsmAlphabet.getMatchableCharForGsm(arrayOfByte, j)) { bool2 = false; Log.e("SmsMessage", "=== end - getEncodableGsm7bitForSubmitBody : " + bool2); bool1 = bool2; return bool1; i = 160; } } catch (UnsupportedEncodingException localUnsupportedEncodingException) { while (true) { boolean bool2; Log.e("SmsMessage", "UnsupportedEncodingException ", localUnsupportedEncodingException); boolean bool1 = false; continue; if (calculateLength(paramString, false).codeUnitCount > i) { bool2 = false; } else { bool2 = true; continue; bool2 = true; } } } } } còn cơ số chỗ nữa ~.~
Sửa Java để dịch ra smali có khi phải dùng SDK. VN mình nhiều cao thủ thật. Cố gắng ko phải mò sang web tàu down ROM, mà sang đó viết bài cho nó down hehe
Thưa các cao thủ. File fix này là của china 100%. Ta sửa chút ít nên bug còn lòi ra mỗi khi lấy logcat kể cả send ok. Mail hoặc QQ với các vọc sĩ fix sms người china mà trao đổi thử xem trình họ ra sao. Cho ra cả 1 nắm kiến thức cao siêu = tiếng China google dịch cả tháng chắc chưa hiểu nổi.
hiểu nổi chắc ngồi viết lại cả framework khỏi cần sửa bác có acc level cao bên naver không cho em ké với bên đấy có cái theme cho 414 nhìn ngon ngon
Người VN chiến được chứ anh. (bbqhuy, haiaune,...) em đang vật lộn với sms 2.3.4 của sky dòng thâm thấp cố gắng hoàn thành 730 760 770 lên ics thấy khả quan và thắng lợi kha khá. Nôm na hiểu được một tí tẹo.
Đã lọc xong một đống cái mớ code em tung lên rồi nhé. Lấy của ... con khác đấy nha. Các khối nó cùng chức năng xử lí như nhau thì trôi ngay. Cho nên thấy công thức if (i <= 160) break label80; localTextEncodingDetails.msgCount = ((i + 152) / 153); thì biết ngay là từ i<=140 mà ra. Gặp trường hợp tính độ dài chặt chẽ kiểu !boolean i>160 và i=>140 như rom 2.3.x thì oải quá. utf-8 nghe nói ít sử dụng trong cái này tuy nó là unicode gửi đc chữ như chữ TQ. tuy 8 bit nhưng nên dùng ucs-2