Advertisement
Guest User

SpnOverride.smali

a guest
Jul 27th, 2012
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.32 KB | None | 0 0
  1. .class public Lcom/android/internal/telephony/gsm/SpnOverride;
  2. .super Ljava/lang/Object;
  3. .source "SpnOverride.java"
  4.  
  5.  
  6. # annotations
  7. .annotation system Ldalvik/annotation/MemberClasses;
  8. value = {
  9. Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;
  10. }
  11. .end annotation
  12.  
  13.  
  14. # static fields
  15. .field static final LOG_TAG:Ljava/lang/String; = "GSM"
  16.  
  17. .field static final PARTNER_SPN_OVERRIDE_PATH:Ljava/lang/String; = "etc/spn-conf.xml"
  18.  
  19.  
  20. # instance fields
  21. .field private CarrierSpnMap:Ljava/util/HashMap;
  22. .annotation system Ldalvik/annotation/Signature;
  23. value = {
  24. "Ljava/util/HashMap",
  25. "<",
  26. "Ljava/lang/String;",
  27. "Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;",
  28. ">;"
  29. }
  30. .end annotation
  31. .end field
  32.  
  33.  
  34. # direct methods
  35. .method constructor <init>()V
  36. .registers 2
  37.  
  38. .prologue
  39. .line 59
  40. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  41.  
  42. .line 61
  43. new-instance v0, Ljava/util/HashMap;
  44.  
  45. invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
  46.  
  47. iput-object v0, p0, Lcom/android/internal/telephony/gsm/SpnOverride;->CarrierSpnMap:Ljava/util/HashMap;
  48.  
  49. .line 62
  50. invoke-direct {p0}, Lcom/android/internal/telephony/gsm/SpnOverride;->loadSpnOverrides()V
  51.  
  52. .line 63
  53. return-void
  54. .end method
  55.  
  56. .method private loadSpnOverrides()V
  57. .registers 14
  58.  
  59. .prologue
  60. const-string v4, "etc/spn-conf.xml"
  61.  
  62. const-string v0, "Exception in spn-conf parser "
  63.  
  64. const-string v3, "GSM"
  65.  
  66. .line 117
  67. new-instance v10, Ljava/io/File;
  68.  
  69. invoke-static {}, Landroid/os/Environment;->getRootDirectory()Ljava/io/File;
  70.  
  71. move-result-object v0
  72.  
  73. const-string v1, "etc/spn-conf.xml"
  74.  
  75. invoke-direct {v10, v0, v4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
  76.  
  77. .line 121
  78. .local v10, spnFile:Ljava/io/File;
  79. :try_start_11
  80. new-instance v11, Ljava/io/FileReader;
  81.  
  82. invoke-direct {v11, v10}, Ljava/io/FileReader;-><init>(Ljava/io/File;)V
  83. :try_end_16
  84. .catch Ljava/io/FileNotFoundException; {:try_start_11 .. :try_end_16} :catch_39
  85.  
  86. .line 129
  87. .local v11, spnReader:Ljava/io/FileReader;
  88. :try_start_16
  89. invoke-static {}, Landroid/util/Xml;->newPullParser()Lorg/xmlpull/v1/XmlPullParser;
  90.  
  91. move-result-object v9
  92.  
  93. .line 130
  94. .local v9, parser:Lorg/xmlpull/v1/XmlPullParser;
  95. invoke-interface {v9, v11}, Lorg/xmlpull/v1/XmlPullParser;->setInput(Ljava/io/Reader;)V
  96.  
  97. .line 132
  98. const-string/jumbo v0, "spnOverrides"
  99.  
  100. invoke-static {v9, v0}, Lcom/android/internal/util/XmlUtils;->beginDocument(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
  101.  
  102. .line 135
  103. :goto_23
  104. invoke-static {v9}, Lcom/android/internal/util/XmlUtils;->nextElement(Lorg/xmlpull/v1/XmlPullParser;)V
  105.  
  106. .line 137
  107. invoke-interface {v9}, Lorg/xmlpull/v1/XmlPullParser;->getName()Ljava/lang/String;
  108.  
  109. move-result-object v7
  110.  
  111. .line 138
  112. .local v7, name:Ljava/lang/String;
  113. const-string/jumbo v0, "spnOverride"
  114.  
  115. invoke-virtual {v0, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  116. :try_end_30
  117. .catchall {:try_start_16 .. :try_end_30} :catchall_dd
  118. .catch Lorg/xmlpull/v1/XmlPullParserException; {:try_start_16 .. :try_end_30} :catch_97
  119. .catch Ljava/io/IOException; {:try_start_16 .. :try_end_30} :catch_b9
  120.  
  121. move-result v0
  122.  
  123. if-nez v0, :cond_64
  124.  
  125. .line 160
  126. if-eqz v11, :cond_38
  127.  
  128. .line 161
  129. :try_start_35
  130. invoke-virtual {v11}, Ljava/io/FileReader;->close()V
  131. :try_end_38
  132. .catch Ljava/io/IOException; {:try_start_35 .. :try_end_38} :catch_e4
  133.  
  134. .line 167
  135. .end local v7 #name:Ljava/lang/String;
  136. .end local v9 #parser:Lorg/xmlpull/v1/XmlPullParser;
  137. .end local v11 #spnReader:Ljava/io/FileReader;
  138. :cond_38
  139. :goto_38
  140. return-void
  141.  
  142. .line 122
  143. :catch_39
  144. move-exception v0
  145.  
  146. move-object v6, v0
  147.  
  148. .line 123
  149. .local v6, e:Ljava/io/FileNotFoundException;
  150. const-string v0, "GSM"
  151.  
  152. new-instance v0, Ljava/lang/StringBuilder;
  153.  
  154. invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
  155.  
  156. const-string v1, "Can\'t open "
  157.  
  158. invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  159.  
  160. move-result-object v0
  161.  
  162. invoke-static {}, Landroid/os/Environment;->getRootDirectory()Ljava/io/File;
  163.  
  164. move-result-object v1
  165.  
  166. invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  167.  
  168. move-result-object v0
  169.  
  170. const-string v1, "/"
  171.  
  172. invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  173.  
  174. move-result-object v0
  175.  
  176. const-string v1, "etc/spn-conf.xml"
  177.  
  178. invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  179.  
  180. move-result-object v0
  181.  
  182. invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  183.  
  184. move-result-object v0
  185.  
  186. invoke-static {v3, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  187.  
  188. goto :goto_38
  189.  
  190. .line 142
  191. .end local v6 #e:Ljava/io/FileNotFoundException;
  192. .restart local v7 #name:Ljava/lang/String;
  193. .restart local v9 #parser:Lorg/xmlpull/v1/XmlPullParser;
  194. .restart local v11 #spnReader:Ljava/io/FileReader;
  195. :cond_64
  196. const/4 v0, 0x0
  197.  
  198. :try_start_65
  199. const-string/jumbo v1, "numeric"
  200.  
  201. invoke-interface {v9, v0, v1}, Lorg/xmlpull/v1/XmlPullParser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
  202.  
  203. move-result-object v8
  204.  
  205. .line 143
  206. .local v8, numeric:Ljava/lang/String;
  207. const/4 v0, 0x0
  208.  
  209. const-string/jumbo v1, "spn"
  210.  
  211. invoke-interface {v9, v0, v1}, Lorg/xmlpull/v1/XmlPullParser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
  212.  
  213. move-result-object v2
  214.  
  215. .line 147
  216. .local v2, data:Ljava/lang/String;
  217. iget-object v12, p0, Lcom/android/internal/telephony/gsm/SpnOverride;->CarrierSpnMap:Ljava/util/HashMap;
  218.  
  219. new-instance v0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;
  220.  
  221. const/4 v1, 0x0
  222.  
  223. const-string/jumbo v3, "spn_display_rule"
  224.  
  225. invoke-interface {v9, v1, v3}, Lorg/xmlpull/v1/XmlPullParser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
  226.  
  227. move-result-object v3
  228.  
  229. const/4 v1, 0x0
  230.  
  231. const-string/jumbo v4, "spn_override_only_on"
  232.  
  233. invoke-interface {v9, v1, v4}, Lorg/xmlpull/v1/XmlPullParser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
  234.  
  235. move-result-object v4
  236.  
  237. const/4 v1, 0x0
  238.  
  239. const-string v5, "fake_home_on"
  240.  
  241. invoke-interface {v9, v1, v5}, Lorg/xmlpull/v1/XmlPullParser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
  242.  
  243. move-result-object v5
  244.  
  245. move-object v1, p0
  246.  
  247. invoke-direct/range {v0 .. v5}, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;-><init>(Lcom/android/internal/telephony/gsm/SpnOverride;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
  248.  
  249. invoke-virtual {v12, v8, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  250. :try_end_96
  251. .catchall {:try_start_65 .. :try_end_96} :catchall_dd
  252. .catch Lorg/xmlpull/v1/XmlPullParserException; {:try_start_65 .. :try_end_96} :catch_97
  253. .catch Ljava/io/IOException; {:try_start_65 .. :try_end_96} :catch_b9
  254.  
  255. goto :goto_23
  256.  
  257. .line 154
  258. .end local v2 #data:Ljava/lang/String;
  259. .end local v7 #name:Ljava/lang/String;
  260. .end local v8 #numeric:Ljava/lang/String;
  261. .end local v9 #parser:Lorg/xmlpull/v1/XmlPullParser;
  262. :catch_97
  263. move-exception v0
  264.  
  265. move-object v6, v0
  266.  
  267. .line 155
  268. .local v6, e:Lorg/xmlpull/v1/XmlPullParserException;
  269. :try_start_99
  270. const-string v0, "GSM"
  271.  
  272. new-instance v1, Ljava/lang/StringBuilder;
  273.  
  274. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  275.  
  276. const-string v3, "Exception in spn-conf parser "
  277.  
  278. invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  279.  
  280. move-result-object v1
  281.  
  282. invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  283.  
  284. move-result-object v1
  285.  
  286. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  287.  
  288. move-result-object v1
  289.  
  290. invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  291. :try_end_b1
  292. .catchall {:try_start_99 .. :try_end_b1} :catchall_dd
  293.  
  294. .line 160
  295. if-eqz v11, :cond_38
  296.  
  297. .line 161
  298. :try_start_b3
  299. invoke-virtual {v11}, Ljava/io/FileReader;->close()V
  300. :try_end_b6
  301. .catch Ljava/io/IOException; {:try_start_b3 .. :try_end_b6} :catch_b7
  302.  
  303. goto :goto_38
  304.  
  305. .line 163
  306. :catch_b7
  307. move-exception v0
  308.  
  309. goto :goto_38
  310.  
  311. .line 156
  312. .end local v6 #e:Lorg/xmlpull/v1/XmlPullParserException;
  313. :catch_b9
  314. move-exception v0
  315.  
  316. move-object v6, v0
  317.  
  318. .line 157
  319. .local v6, e:Ljava/io/IOException;
  320. :try_start_bb
  321. const-string v0, "GSM"
  322.  
  323. new-instance v1, Ljava/lang/StringBuilder;
  324.  
  325. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  326.  
  327. const-string v3, "Exception in spn-conf parser "
  328.  
  329. invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  330.  
  331. move-result-object v1
  332.  
  333. invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  334.  
  335. move-result-object v1
  336.  
  337. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  338.  
  339. move-result-object v1
  340.  
  341. invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  342. :try_end_d3
  343. .catchall {:try_start_bb .. :try_end_d3} :catchall_dd
  344.  
  345. .line 160
  346. if-eqz v11, :cond_38
  347.  
  348. .line 161
  349. :try_start_d5
  350. invoke-virtual {v11}, Ljava/io/FileReader;->close()V
  351. :try_end_d8
  352. .catch Ljava/io/IOException; {:try_start_d5 .. :try_end_d8} :catch_da
  353.  
  354. goto/16 :goto_38
  355.  
  356. .line 163
  357. :catch_da
  358. move-exception v0
  359.  
  360. goto/16 :goto_38
  361.  
  362. .line 159
  363. .end local v6 #e:Ljava/io/IOException;
  364. :catchall_dd
  365. move-exception v0
  366.  
  367. .line 160
  368. if-eqz v11, :cond_e3
  369.  
  370. .line 161
  371. :try_start_e0
  372. invoke-virtual {v11}, Ljava/io/FileReader;->close()V
  373. :try_end_e3
  374. .catch Ljava/io/IOException; {:try_start_e0 .. :try_end_e3} :catch_e7
  375.  
  376. .line 165
  377. :cond_e3
  378. :goto_e3
  379. throw v0
  380.  
  381. .line 163
  382. .restart local v7 #name:Ljava/lang/String;
  383. .restart local v9 #parser:Lorg/xmlpull/v1/XmlPullParser;
  384. :catch_e4
  385. move-exception v0
  386.  
  387. goto/16 :goto_38
  388.  
  389. .end local v7 #name:Ljava/lang/String;
  390. .end local v9 #parser:Lorg/xmlpull/v1/XmlPullParser;
  391. :catch_e7
  392. move-exception v1
  393.  
  394. goto :goto_e3
  395. .end method
  396.  
  397.  
  398. # virtual methods
  399. .method containsCarrier(Ljava/lang/String;)Z
  400. .registers 3
  401. .parameter "carrier"
  402.  
  403. .prologue
  404. .line 66
  405. iget-object v0, p0, Lcom/android/internal/telephony/gsm/SpnOverride;->CarrierSpnMap:Ljava/util/HashMap;
  406.  
  407. invoke-virtual {v0, p1}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
  408.  
  409. move-result v0
  410.  
  411. return v0
  412. .end method
  413.  
  414. .method getDisplayRule(Ljava/lang/String;)I
  415. .registers 5
  416. .parameter "carrier"
  417.  
  418. .prologue
  419. .line 76
  420. iget-object v2, p0, Lcom/android/internal/telephony/gsm/SpnOverride;->CarrierSpnMap:Ljava/util/HashMap;
  421.  
  422. invoke-virtual {v2, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  423.  
  424. move-result-object p0
  425.  
  426. .end local p0
  427. check-cast p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;
  428.  
  429. iget-object v1, p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;->spn_display_rule:Ljava/lang/String;
  430.  
  431. .line 77
  432. .local v1, rule:Ljava/lang/String;
  433. const/4 v0, 0x0
  434.  
  435. .line 79
  436. .local v0, result:I
  437. if-eqz v1, :cond_22
  438.  
  439. .line 80
  440. const-string v2, "SPN_RULE_SHOW_SPN"
  441.  
  442. invoke-virtual {v1, v2}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
  443.  
  444. move-result v2
  445.  
  446. if-eqz v2, :cond_17
  447.  
  448. .line 81
  449. add-int/lit8 v0, v0, 0x1
  450.  
  451. .line 83
  452. :cond_17
  453. const-string v2, "SPN_RULE_SHOW_PLMN"
  454.  
  455. invoke-virtual {v1, v2}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
  456.  
  457. move-result v2
  458.  
  459. if-eqz v2, :cond_21
  460.  
  461. .line 84
  462. add-int/lit8 v0, v0, 0x2
  463.  
  464. .line 90
  465. :cond_21
  466. :goto_21
  467. return v0
  468.  
  469. .line 87
  470. :cond_22
  471. const/4 v0, -0x1
  472.  
  473. goto :goto_21
  474. .end method
  475.  
  476. .method getFakeHomeOn(Ljava/lang/String;)[Ljava/lang/String;
  477. .registers 4
  478. .parameter "carrier"
  479.  
  480. .prologue
  481. .line 104
  482. iget-object v1, p0, Lcom/android/internal/telephony/gsm/SpnOverride;->CarrierSpnMap:Ljava/util/HashMap;
  483.  
  484. invoke-virtual {v1, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  485.  
  486. move-result-object p0
  487.  
  488. .end local p0
  489. check-cast p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;
  490.  
  491. iget-object v0, p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;->fake_home_on:Ljava/lang/String;
  492.  
  493. .line 106
  494. .local v0, fho:Ljava/lang/String;
  495. if-eqz v0, :cond_13
  496.  
  497. .line 107
  498. const-string v1, ","
  499.  
  500. invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
  501.  
  502. move-result-object v1
  503.  
  504. .line 110
  505. :goto_12
  506. return-object v1
  507.  
  508. :cond_13
  509. const/4 v1, 0x0
  510.  
  511. goto :goto_12
  512. .end method
  513.  
  514. .method getOverrideOnlyOn(Ljava/lang/String;)[Ljava/lang/String;
  515. .registers 4
  516. .parameter "carrier"
  517.  
  518. .prologue
  519. .line 94
  520. iget-object v1, p0, Lcom/android/internal/telephony/gsm/SpnOverride;->CarrierSpnMap:Ljava/util/HashMap;
  521.  
  522. invoke-virtual {v1, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  523.  
  524. move-result-object p0
  525.  
  526. .end local p0
  527. check-cast p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;
  528.  
  529. iget-object v0, p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;->spn_override_only_on:Ljava/lang/String;
  530.  
  531. .line 96
  532. .local v0, sooo:Ljava/lang/String;
  533. if-eqz v0, :cond_13
  534.  
  535. .line 97
  536. const-string v1, ","
  537.  
  538. invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
  539.  
  540. move-result-object v1
  541.  
  542. .line 100
  543. :goto_12
  544. return-object v1
  545.  
  546. :cond_13
  547. const/4 v1, 0x0
  548.  
  549. goto :goto_12
  550. .end method
  551.  
  552. .method getSpn(Ljava/lang/String;)Ljava/lang/String;
  553. .registers 3
  554. .parameter "carrier"
  555.  
  556. .prologue
  557. .line 71
  558. iget-object v0, p0, Lcom/android/internal/telephony/gsm/SpnOverride;->CarrierSpnMap:Ljava/util/HashMap;
  559.  
  560. invoke-virtual {v0, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  561.  
  562. move-result-object p0
  563.  
  564. .end local p0
  565. check-cast p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;
  566.  
  567. iget-object v0, p0, Lcom/android/internal/telephony/gsm/SpnOverride$SpnOverrideInfo;->spn:Ljava/lang/String;
  568.  
  569. return-object v0
  570. .end method
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement