đú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:
Post a Comment