簡體   English   中英

互聯網連接關閉時顯示警報

[英]Display an alert when Internet connection is off

我已將我的Android手機與LAN連接。 禁用局域網連接時,我想顯示祝酒詞或警報。 我正在嘗試以下代碼,但沒有用。 我想念什么?

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    isNetworkAvailable(MainActivity.this);
}

// to check connection state

public static boolean isNetworkAvailable(Context context){
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Network network = connectivityManager.getActiveNetwork();
    NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
    if(networkCapabilities == null){
        Toast.makeText(context, "No Internet connection!", Toast.LENGTH_LONG).show();
    }
    return true;
}
}

由於不推薦使用NetworkInfo因此無法使用。 提前致謝

更新:

我使用下面鏈接中的示例解決了我的問題。 很好解釋。 看一看 :)

檢測互聯網連接

首先,您顯示的代碼僅在創建活動時才被觸發,並且只有一次。 您需要的是監視連接變化

如上所述:

如果目標為Android 7.0(API級別24)及更高版本的應用在清單中聲明了廣播接收器,則不會收到CONNECTIVITY_ACTION廣播

這意味着您將必須創建一個自定義廣播接收器(我使用kotlin進行android開發,您應該可以將其轉換為java):

class NetworkStatusReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        // check intent action for the connection status
    }
}

要使用接收器,您需要在活動中注冊它(更好的選擇是在多個活動中需要它時使用服務):

val filter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
filter.addAction("mypackage.CONNECTIVITY_CHANGE")
val permissionReceiver = NetworkStatusReceiver()
registerReceiver(permissionReceiver, filter)

為避免內存泄漏或多個綁定,建議在組件的生命周期結束后取消綁定接收器,可以通過以下方法實現:

unregisterReceiver(permissionReceiver)

另外,不要忘了添加到清單中:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

嘗試這個

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(isNetworkConnected){

}else{
    Toast.makeText(context, "No Internet 
connection!",Toast.LENGTH_LONG).show();

}
}

public boolean isNetworkConnected(Context context) {
    ConnectivityManager cm = (ConnectivityManager) 
context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnected();
}
}

首先在manifest.xml文件中添加了網絡權限:例如:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

然后創建並注冊一個廣播接收器類,每當網絡/互聯網連接發生變化時,該類就會得到通知。

這是一個很好的示例鏈接: https://www.androidhive.info/2012/07/android-detect-internet-connection-status/ : https://www.androidhive.info/2012/07/android-detect-internet-connection-status/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM