Thursday, March 22, 2012

[Android] Con đường tìm kiếm... tên nhà mạng

đúng là cả 1 con đường... vì thật vất vả.

nếu 2 method API cung cấp mà lấy được tên nhà mạng thì không có gì để nói: đó là
Telephony...    getNetworkOperatorName() getSimOperatorName()

có nhiều trường hợp kết quả trả về sẽ không giống những gì bạn cần lấy - tên nhà mạng sim bạn đang dùng - dòng chữ hiện ở thanh status bar đã kéo xuống hay ngoài lock screen.

Mò từ android open source, 2 chỗ nói trên đều lấy tên nhà mạng từ chỗ khác, dùng các class không được public ra api... sẽ cố dùng reflect để mò ra nó sau.
http://grepcode.com/file/repository.grepcode.com$java$ext@com.google.android$android@2.3.7_r1@com$android$systemui$statusbar$CarrierLabel.java



Quá trình tìm hiểu phát hiện ra rằng code open source của android có nhiều phần khác biệt với code SDK đưa vào sản phẩm thật. Điển hình là phần lấy tên nhà mạng này @@
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.6_r2/android/telephony/ServiceState.java#ServiceState.getOperatorAlphaLong%28%29

http://stackoverflow.com/questions/499528/what-happened-to-android-provider-telephony



No comments: