0

私は助けが必要です。アプリケーションでインターネットの状態を表示するトーストが必要です。Wi-Fi とモバイル データ パケット (モバイル インターネット) で問題なく動作しています。しかし、インターネットが完全に切断されている場合、何も表示されません。これを行う方法がわかりません。ここに私のコードがあります

public class ConnectivityReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Log.d("myapp", "action: " + intent.getAction());
    ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null &&
                          activeNetwork.isConnectedOrConnecting();

     if(isConnected)
     {
     if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
     {
         Toast toast = Toast.makeText(context, "Connected to wifi", Toast.LENGTH_LONG);
         toast.show();
     }
     else if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
     {
         Toast toast = Toast.makeText(context, "Connected to Mobile Data Pakage", Toast.LENGTH_LONG);
         toast.show();

     }
     else 
      {
         Toast toast = Toast.makeText(context, "Not Connected", Toast.LENGTH_LONG);
         toast.show();

      }

これも試してみてください。ただし、コンパイラはエラーを表示します。親切に私を助けてください。前もって感謝します。

 else if(activeNetwork.getType() == ConnectivityManager.EXTRA_NO_CONNECTIVITY)
      {
                                                                                  Toast toast = Toast.makeText(context, "Not Connected", Toast.LENGTH_LONG);
         toast.show();

マニフェスト

 <receiver android:name="com.networkstatechange.ConnectivityReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
4

3 に答える 3

1

正しいインデントを使用すると、ブロックに入った場合にのみトースト「接続されていません」が表示されることがわかりますif (isConnected)。このように書き換えます。

 if(isConnected)
 {
   if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
   {
       Toast toast = Toast.makeText(context, "Connected to wifi", Toast.LENGTH_LONG);
       toast.show();
   }
   else if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
   {
       Toast toast = Toast.makeText(context, "Connected to Mobile Data Pakage", Toast.LENGTH_LONG);
       toast.show();

   }
 }
 else 
  {
     Toast toast = Toast.makeText(context, "Not Connected", Toast.LENGTH_LONG);
     toast.show();

  }
 }
于 2014-04-18T14:47:03.570 に答える