- جۇغلانما
- 8856
UID8231
تىزىملاتقان2012-6-21
ئاخىرقى قېتىم2015-3-23
توردا5764 سائەت
ئالى باشقۇرغۇچى
ئەلتەر ئەپ بازىرى
  
- نادىر
- 6
- جۇغلانما
- 8856
- ئاقچا
- 14
 
|
بۇ يازمىنى ئاخىرىدا merdan تەھرىرلىگەن. ۋاقتى 2014-9-18 21:43
بەلكىم كۆپىنچىمىز /thread-6985-1-1.html بۇ تېمىدىكى ئەقلىي ئىقتىدارلىق تېلېفۇن ئۇرغۇچنى ئىشلىتىپ باققان بولۇشىمىز مۇمكىن..بۇ ئەقلىي ئىقتىدارلىق تېلېفۇن ئۇرغۇچنىڭ ئەسلى رومدىكى تېلېفۇن ئۇرغۇچتىن پەرقلىنىدىغان ئەڭ مۇھىم پەرقى بولسا تېلېفۇن دەپتىرىدىكى ئۇيغۇرچە ئىسىملارنى كونۇپكا يۈزىدىكى ئۇيغۇرچە ھەرپلەر ئارقىلىق تېز سۈرئەتتە ئىزدىگىلى بولىدۇ. مەن ئۇزۇندىن بېرى رومدىكى ئەسلى تېلېفۇن ئۇرغۇچقا قانداق قېلىپ ئاشۇ ئەقلىي ئىقتىدارلىق تېلېفۇن ئۇرغۇچقا ئوخشاش ئۇيغۇرچە ھەرپلەرنى ئورۇنلاشتۇرغۇلى بولۇش ئۈستىدە ئىزدىنىۋاتقان...نەچچە رومنىڭ ئىچى قارنىنى يېرىپ ئىزدەپمۇ زادى قەيەرگە ئاشۇ ھەرپلەرنى قوشىدىغانلىقى بىلەلمەي يۈرەتتىم، يېقىندا سەل ئېلگىرلەش بولدى ، شۇڭا كۆپچىلىك بىلەن ئورتاقلىشاي دەيمەن، ئارىمىزدا موشۇ تۈرگە قىزىقىدىغانلار بولسا كۆرۈپ ئاز تۇلا پايدىلانسا بولىدۇ...
ئەلتەر ئەپ بازىرى چۈشۈرۈش ئادرېسى :http://www.elter.cc/appmarket/uploads/share/share.html
يۇقارقى ئىقتىدار رومنىڭ ئەسلى كودىدىكى work/qcom-msm8625q-ics-experimental/packages/Contactsprovidersمۇندەرىجىسىدىكى SearchIndexManager.java دېگەن ھۆججەتكە تۆۋەندىكىدەك كودنى قوشۇش ئارقىلىق ئەمەلگە ئاشىدۇ..- public void appendToken(String token) {
- if (TextUtils.isEmpty(token)) {
- return;
- }
- if (mSbTokens.length() != 0) {
- mSbTokens.append(' ');
- }
- mSbTokens.append(token);
- }
- public void appendName(String name) {
- if (TextUtils.isEmpty(name)) {
- return;
- }
- // First, put the original name.
- appendNameInternal(name);
- final List nameParts = splitIntoFtsTokens(name);
- if (nameParts.size() > 1) {
- for (String namePart : nameParts) {
- if (!TextUtils.isEmpty(namePart)) {
- appendNameInternal(namePart);
- }
- }
- }
- }
- String getNumberFormChar(char c){
- //bashlash Alip_merdan@2013-11-13 uyghurche izdesh turi qoshush
- if(c >= 'a' && c <= 'c' || c == '\u0626' || c == '\u0627' || c == '\u06d5' || c == '\u0628' || c == '\u0633'){
- return "2";
- }else if(c >= 'd' && c <= 'f' || c == '\u062f' || c == '\u06d0' || c == '\u0641' || c == '\u0698'){
- return "3";
- }else if(c >= 'g' && c <= 'i' || c == '\u06af' || c == '\u062e' || c == '\u0649' || c == '\u063a'){
- return "4";
- }else if(c >= 'j' && c <= 'l' || c == '\u062c' || c == '\u0643' || c == '\u06c6' || c == '\u0644'){
- return "5";
- }else if(c >= 'm' && c <= 'o' || c == '\u0645' || c == '\u0646' || c == '\u0648' || c == '\u06ad'){
- return "6";
- }else if(c >= 'p' && c <= 's' || c == '\u067e' || c == '\u0686' || c == '\u0642' || c == '\u0631'){
- return "7";
- }else if(c >= 't' && c <= 'v' || c == '\u062a' || c == '\u06c7' || c == '\u06c8' || c == '\u06be'){
- return "8";
- }else if(c >= 'w' && c <= 'z' || c == '\u06cb' || c == '\u0634' || c == '\u064a' || c == '\u0632'){
- return "9";
- //modify end
- }else if('0' <= c && c <= '9'){
- return "" + c;
- }else{
- return "";
- }
- }
- String getNameNumber(String name){
- String number = "";
- String nameLow = name.toLowerCase();
- for(int i=0;i
- char c = nameLow.charAt(i);
- number = number + getNumberFormChar(c);
- }
- return number;
- }
-
مەزمۇننى كۆچۈرۈۋېلىش ( بۇ كوددىكى ئۇيغۇرچە ھەرپلەرنىڭ تېزىلىشى ئۇيغۇرچە ئەقلىي ئىقتىدارلىق تېلېفۇن ئۇرغۇچنىڭكى بىلەن ئوخشاش قېلىپ تىزىلغان، يۇقارقى ئۇيغۇرچە ھەرپلەرنىڭ يۇنىكود نومۇرلىرىنىڭ ئورنىنى ئالماشتۇرۇش ئارقىلىق خالىغانچە تىزىشقا بولىدۇ، كودتا قانداق تېزغان بولساق كونۇپكىلارنىڭ رەسىمىگە شۇ ھەرپلەرنى يېزىپ قويساقلا نورمال ئىشلەيدۇ)
ئەمما يامان بولغىنى بىزدە قولىمىزدىكى رومنىڭ ئەسلى كودى يوق ...پەقەت يانفۇن شىركەتلىرىدىلا بار ،يانفۇن شىركەتلىرى يۇقارقى كودنى قوشۇپ قويسىلا ئۇيغۇرچە ئاندىروئىد سىستېمىسىغا بىر ياخشى ئىقتىدار قوشۇلىدۇ ،ئەمما بىز قانداق قىلىمىز ؟!
يۇقارقى قود قوشۇلغان ھۆججەت روم ھاسىل بولغاندىن كېيىن Contactsproviders.apk بولۇپ شەكىللىنىدۇ..بۇ ئەپ ئاساسەن ھەممە رومدا بار....شۇنداق قېلىپ بىز شۇ ئەپنى apktool دا يېشىپ يۇقارقى كودنى قوشىدىغان ئورۇننى ئىزدەپ باقايلى...
ئەپنى يەشكەندىن كېيىن apktool\APK1\smali\com\android\providers\contacts مۇندەرىجىسىدە بىر دانە SearchIndexManager.smali دېگەن ھۆججەتنىڭ بارلىقىنى كۆرىمىز، قارىساق ئەسلى كوددىكى يۇقارقى كودنى قوشىدىغان ھۆججەتنىڭ نامى SearchIndexManager.java ، ئەپنى يەشكەندىكى ھۆججەتنىڭ بولسا SearchIndexManager.smali ، دېمەك ھۆججەتنىڭ نامى ئۆزگەرمەپتۇ ، پەقەت شەكلى ئۆزگىرەپتۇ....چاتاق يېرى ئۆزگەرگىنى پەقەت شەكلىلا ئەمەسكەن ،مەزمۇنىمۇ باشقىلا بىر شەكىلدىكى كودقا ئايلىنىپ قاپتۇ...تۆۋەندىكىسى SearchIndexManager.smali نىڭ كودى
- .method getNumberFormChar(C)Ljava/lang/String;
- .registers 4
- .parameter "c"
- .prologue
- .line 231
- const/16 v0, 0x61
- if-lt p1, v0, :cond_8
- const/16 v0, 0x63
- if-le p1, v0, :cond_1c
- :cond_8
- const/16 v0, 0x626
- if-eq p1, v0, :cond_1c
- const/16 v0, 0x627
- if-eq p1, v0, :cond_1c
- const/16 v0, 0x6d5
- if-eq p1, v0, :cond_1c
- const/16 v0, 0x628
- if-eq p1, v0, :cond_1c
- const/16 v0, 0x633
- if-ne p1, v0, :cond_1f
- .line 232
- :cond_1c
- const-string v0, "2"
- .line 250
- :goto_1e
- return-object v0
- .line 233
- :cond_1f
- const/16 v0, 0x64
- if-lt p1, v0, :cond_27
- const/16 v0, 0x66
- if-le p1, v0, :cond_37
- :cond_27
- const/16 v0, 0x62f
- if-eq p1, v0, :cond_37
- const/16 v0, 0x6d0
- if-eq p1, v0, :cond_37
- const/16 v0, 0x641
- if-eq p1, v0, :cond_37
- const/16 v0, 0x698
- if-ne p1, v0, :cond_3a
- .line 234
- :cond_37
- const-string v0, "3"
- goto :goto_1e
- .line 235
- :cond_3a
- const/16 v0, 0x67
- if-lt p1, v0, :cond_42
- const/16 v0, 0x69
- if-le p1, v0, :cond_52
- :cond_42
- const/16 v0, 0x6af
- if-eq p1, v0, :cond_52
- const/16 v0, 0x62e
- if-eq p1, v0, :cond_52
- const/16 v0, 0x649
- if-eq p1, v0, :cond_52
- const/16 v0, 0x63a
- if-ne p1, v0, :cond_55
- .line 236
- :cond_52
- const-string v0, "4"
- goto :goto_1e
- .line 237
- :cond_55
- const/16 v0, 0x6a
- if-lt p1, v0, :cond_5d
- const/16 v0, 0x6c
- if-le p1, v0, :cond_6d
- :cond_5d
- const/16 v0, 0x62c
- if-eq p1, v0, :cond_6d
- const/16 v0, 0x643
- if-eq p1, v0, :cond_6d
- const/16 v0, 0x6c6
- if-eq p1, v0, :cond_6d
- const/16 v0, 0x644
- if-ne p1, v0, :cond_70
- .line 238
- :cond_6d
- const-string v0, "5"
- goto :goto_1e
- .line 239
- :cond_70
- const/16 v0, 0x6d
- if-lt p1, v0, :cond_78
- const/16 v0, 0x6f
- if-le p1, v0, :cond_88
- :cond_78
- const/16 v0, 0x645
- if-eq p1, v0, :cond_88
- const/16 v0, 0x646
- if-eq p1, v0, :cond_88
- const/16 v0, 0x648
- if-eq p1, v0, :cond_88
- const/16 v0, 0x6ad
- if-ne p1, v0, :cond_8b
- .line 240
- :cond_88
- const-string v0, "6"
- goto :goto_1e
- .line 241
- :cond_8b
- const/16 v0, 0x70
- if-lt p1, v0, :cond_93
- const/16 v0, 0x73
- if-le p1, v0, :cond_a3
- :cond_93
- const/16 v0, 0x67e
- if-eq p1, v0, :cond_a3
- const/16 v0, 0x686
- if-eq p1, v0, :cond_a3
- const/16 v0, 0x642
- if-eq p1, v0, :cond_a3
- const/16 v0, 0x631
- if-ne p1, v0, :cond_a7
- .line 242
- :cond_a3
- const-string v0, "7"
- goto/16 :goto_1e
- .line 243
- :cond_a7
- const/16 v0, 0x74
- if-lt p1, v0, :cond_af
- const/16 v0, 0x76
- if-le p1, v0, :cond_bf
- :cond_af
- const/16 v0, 0x62a
- if-eq p1, v0, :cond_bf
- const/16 v0, 0x6c7
- if-eq p1, v0, :cond_bf
- const/16 v0, 0x6c8
- if-eq p1, v0, :cond_bf
- const/16 v0, 0x6be
- if-ne p1, v0, :cond_c3
- .line 244
- :cond_bf
- const-string v0, "8"
- goto/16 :goto_1e
- .line 245
- :cond_c3
- const/16 v0, 0x77
- if-lt p1, v0, :cond_cb
- const/16 v0, 0x7a
- if-le p1, v0, :cond_db
- :cond_cb
- const/16 v0, 0x6cb
- if-eq p1, v0, :cond_db
- const/16 v0, 0x634
- if-eq p1, v0, :cond_db
- const/16 v0, 0x64a
- if-eq p1, v0, :cond_db
- const/16 v0, 0x632
- if-ne p1, v0, :cond_df
- .line 246
- :cond_db
- const-string v0, "9"
- goto/16 :goto_1e
- .line 247
- :cond_df
- const/16 v0, 0x30
- if-gt v0, p1, :cond_fc
- const/16 v0, 0x39
- if-gt p1, v0, :cond_fc
- .line 248
- new-instance v0, Ljava/lang/StringBuilder;
- invoke-direct {v0}, Ljava/lang/StringBuilder;->()V
- const-string v1, ""
- invoke-virtual-quick {v0, v1}, vtable@0x3b
- move-result-object v0
- invoke-virtual-quick {v0, p1}, vtable@0x33
- move-result-object v0
- invoke-virtual-quick {v0}, vtable@0x7
- move-result-object v0
- goto/16 :goto_1e
مەزمۇننى كۆچۈرۈۋېلىش بۇ كودلارنى بىرەرسىڭلار چۈشەنگەنسىلەر؟؟؟ئىشقىلىپ مەن چۈشەنمىدىم.
شۇنداق قېلىپ ئازتۇلا ئاۋارچىلىق ئۇسۇلنى ئىشلەتمەي ئامال بولمىدى..يەنى باشتا ئەگەر رومدا شۇ ئەپنىڭ odex ھۆججىتى بولمىسا ئەپنىڭ ئىچىدىكى classes.dex نى ئېلىپ چىقىپ گۇگول تەمىنلىگەن ئايلاندۇرۇش قۇرالى ئارقىلىق classes.dex نى jar ھۆججىتىگە ئايلاندۇرساق ھاسىل بولغان SearchIndexManager.jar دېكى مەزمۇن يۇقارقى SearchIndexManager.java دېكى مەزمۇن بىلەن ئاساسىي جەھەتتىن ئوخشاش..شۇڭا يۇقارقى ئەسلى كودقا قوشىدىغان كود بۇيىچە تەڭشەپ يەنە classes.dex ھاسىل قېلىپ ئۇنى ئەپتىكى classes.dex بىلەن ئالماشتۇرۋەتسەك بولىدۇ..
ئەگەر رومدا شۇ ئەپكە ماس ھالدا بىر odex ھۆججىتى بولسا باشتا odex بىلەن apk نى بىرىكتۈرۈپ يۇقارقى ئۇسۇلدىن پايدىلانساق ياكى بىۋاستە odex نى classes.dex قا ئايلاندۇرۇپ ، ئۇنى يەنە jar ھۆججىتىگە ئايلاندۇرۇپ تەڭشەپ بولغاندىن كېيىن classes.dex ھاسىل قېلىپلا ئەپتىكىسى بىلەن ئالماشتۇرىۋەتسەك بولىدۇ...
ئەلتەر ئەپ بازىرى چۈشۈرۈش ئادرېسى :http://www.elter.cc/appmarket/uploads/share/share.html
يۇقارقى جەريانلار سەل ئاۋارىچىلىق، قېيىنلىق دەرىجىسىمۇ خېلى يۇقىرى ، سىناپ بېقىشنى ئويلىغانلار چۇقۇم بەلنى قاتتىق باغلىشى كېرەك. تۆۋەندىكىلەرنى سىناپ بېقىشنى خالىغۇچىلارنىڭ پايدىلىنىشى ئۆچۈن قالدۇردۇم.
SearchIndexManager.java.txt
(21.73 KB, چۈشۈرۈش سانى: 66)
|
|