tôi đọc nó trên Google Developer:BroadcastReceiver CONNECTIVITY_CHANGE luôn chạy trong ứng dụng khởi chạy lần đầu tiên?
("android.net.conn.CONNECTIVITY_CHANGE") hành động bất cứ khi nào các chi tiết kết nối đã thay đổi
tôi có mã này:
public class MainActivity mở rộng AppCompatActivity {
private NetworkChangeReceiver receiver;
private boolean connIntentFilterIsRegistered;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver = new NetworkChangeReceiver();
}
@Override
protected void onPause() {
super.onPause();
if (connIntentFilterIsRegistered) {
unregisterReceiver(receiver);
connIntentFilterIsRegistered = false;
}
}
@Override
protected void onResume() {
super.onResume();
if (!connIntentFilterIsRegistered) {
registerReceiver(receiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
connIntentFilterIsRegistered = true;
}
}
và //
public class NetworkUtil {
public static int TYPE_WIFI = 1;
public static int TYPE_MOBILE = 0;
public static int TYPE_NOT_CONNECTED = 2;
public static int getConnectivityStatus(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnectedOrConnecting()) {
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
return TYPE_WIFI;
}
if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
return TYPE_MOBILE;
}
}
return TYPE_NOT_CONNECTED;
}
public static String getConnectivityStatusString(Context context) {
int conn = NetworkUtil.getConnectivityStatus(context);
String status = null;
if (conn == TYPE_MOBILE) {
status = "Mobile cellular enabled";
} else if (conn == TYPE_WIFI) {
status = "Wifi enabled";
} else if (conn == TYPE_NOT_CONNECTED) {
status = "Not connected to internet";
}
return status;
}
}
khi lần đầu tiên tôi khởi động ứng dụng, mục đích này luôn bị sa thải và hiển thị một hộp thoại với trạng thái hiện tại của mạng. Nhưng dựa trên tài liệu này, nó chỉ xảy ra khi kết nối thay đổi? Nếu tôi muốn hiển thị này chỉ khi mạng thay đổi, làm thế nào tôi có thể làm gì? Rất cảm ơn
Rất cám ơn. Tôi đã làm điều đó trước khi nhìn thấy câu trả lời của bạn và nó hoạt động: D –