Tôi đã tạo một BroadcastReceiver
để nghe sự kiện CONNECTIVITY_CHANGE
. Hiện tại, tôi chỉ cần in ra hành động của số Intent
gọi số BroadcastReceiver
và các tính năng bổ sung của nó. Tôi đang sử dụng điện thoại thử nghiệm tại văn phòng của chúng tôi ở Manila và thẻ SIM là từ Đan Mạch. Khi onReceive()
được gọi, đây là những gì được in ra trong LogCat:Phát hiện khi chuyển vùng bị tắt trong Android
action: android.net.conn.CONNECTIVITY_CHANGE
key: extraInfo, value: data.tre.dk
key: htcCurrentActiveNetwork, value: null
key: networkInfo, value: null
key: reason, value: roamingOn
key: noConnectivity, value: null
key: inetCondition, value: null
Tôi cần phải biết những gì giá trị của reason
là khi chuyển vùng đi tắt - có thể là roamingOff
bằng cách đoán, nhưng tôi không thể biết chắc chắn, trừ khi tôi đến Đan Mạch. Điều này là do tôi cần thực hiện nhiệm vụ khi dịch vụ chuyển vùng bị tắt và tôi nhận thấy từ LogCat rằng sự kiện CONNECTIVITY_CHANGE
được kích hoạt vì các lý do khác ngoài việc chuyển đổi chế độ chuyển vùng. Hoặc có cách nào tốt hơn để phát hiện khi chuyển vùng bị tắt không?
Mã cho máy thu phát sóng:
public void onReceive(Context context, Intent intent) {
Log.d(This.LOGTAG, "action: " + intent.getAction());
Bundle extras = intent.getExtras();
for (String key : extras.keySet()) {
Log.d(This.LOGTAG, "key: " + key + ", value: " + extras.getString(key));
}
}
nhập Manifest:
<receiver android:name=".listener.RoamingListener">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Tôi vừa ghi lại kết quả của dòng đó cùng với kết quả của 'TelephonyManager.isNetworkRoaming()'.Tôi phát hiện ra rằng 'Settings.Secure.DATA_ROAMING' có thể trả về' 0' (có nghĩa là, chuyển vùng dữ liệu bị tắt) trong khi 'isNetworkRoaming()' là 'true'. Tôi đoán điều này là do telco vẫn đang trong chế độ chuyển vùng mạng nhưng tôi không cho phép thiết bị của mình sử dụng Internet di động. Chúng dường như là các công tắc khác nhau, và tôi đang ở chế độ chuyển vùng mạng. –
Và bạn muốn biết điều gì? Tôi cho rằng 'TelephonyManager.isNetworkRoaming()' cho thấy bạn đang chuyển vùng và cài đặt hiển thị nếu bạn có thể sử dụng internet trong chuyển vùng – Jin35
Tôi đang ở chế độ chuyển vùng mạng vì tôi đang cố gắng đo lường hóa đơn hàng tháng tiếp theo của người dùng-- và bao gồm không chỉ số lượng dữ liệu di động được gửi/nhận thông qua chuyển vùng dữ liệu. –