java - 关于 isConnectingOrConnecting 的替代编码?

标签 java android android-studio broadcastreceiver

我是 android 的新手,正在处理一个广播互联网连接状态的应用程序。我使用了一种已弃用的方法 isConnectingOrConnected() 。我无法修复我的代码及其困惑。请查看我的代码并帮助我。非常感谢任何帮助

这是我的连接接收器代码

import android.net.NetworkInfo;

public class ConnectivityReceiver extends BroadcastReceiver {

public static ConnectivityReceiverListener connectivityReceiverListener;

public ConnectivityReceiver(){
    super();
}


@Override
public void onReceive(Context context, Intent intent) {

    ConnectivityManager manager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null
            && activeNetwork.isConnectedOrConnecting();

    if (connectivityReceiverListener != null) {

 connectivityReceiverListener.onNetworkConnectionChanged(isConnected);
    }
}

public static boolean isConnected() {
    ConnectivityManager
            manager = (ConnectivityManager) 
 ClassForListener.getInstance().getApplicationContext()
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
    return activeNetwork != null
            && activeNetwork.isConnectedOrConnecting();
}


public interface ConnectivityReceiverListener {
    void onNetworkConnectionChanged(boolean isConnected);



}
  }

这是我的 MainActivity

  package com.appindia.srikavyanalluri.mybroacasts;

import android.graphics.Color;
import android.support.design.widget.CoordinatorLayout;
 import android.support.design.widget.Snackbar;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;

 public class MainActivity extends AppCompatActivity
    implements ConnectivityReceiver.ConnectivityReceiverListener {

public Button button1;
CoordinatorLayout cl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button1 = (Button)findViewById(R.id.button_1_1);

    checkConnection();

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            checkConnection();
        }
    });
}
private void checkConnection() {
    boolean isConnected = ConnectivityReceiver.isConnected();
    show(isConnected);
}
private void show(boolean isConnected) {
    String message;
    int color;
    if (isConnected) {
        message = "Internet is Connected! hurray";
        color = Color.WHITE;
    } else {
        message = "Internet is gone :-(";
        color = Color.WHITE;
    }

      Snackbar snackbar = Snackbar.make(cl, message, Snackbar.LENGTH_LONG);

      View view = snackbar.getView();
      TextView textView = (TextView) 
      view.findViewById(android.support.design.R.id.snackbar_text);
      textView.setTextColor(color);
      snackbar.show();
}

@Override
protected void onResume() {
    super.onResume();
    ClassForListener.getInstance().setConnectivityListener(this);
}


@Override
public void onNetworkConnectionChanged(boolean isConnected) {
    show(isConnected);




}
}

最佳答案

isConnectedOrConnecting方法在 API 级别 28 中被弃用。 应用应改为使用 ConnectivityManager.NetworkCallback用于了解连接变化的 API。

试试

    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkRequest.Builder builder = new NetworkRequest.Builder();
    connectivityManager.registerNetworkCallback(
            builder.build(),
            new ConnectivityManager.NetworkCallback() {

                @Override
                public void onAvailable(Network network) {

                   // Active Network

                }

                @Override
                public void onLost(Network network) {

                  // Lost Network

                }
            }

    );

检查 this回答。

ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) and ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent). These will give a more accurate picture of the connectivity state of the device and let apps react more easily and quickly to changes.

关于java - 关于 isConnectingOrConnecting 的替代编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54002775/

相关文章:

java - 从 Activity 到 Fragment 执行 "Shared Element Transition"

android - 将 Glide 与 GoogleMap.InfoWindowAdapter 结合使用

android - 如何在 Android Studio 中设置应用的版本号

java - 在最新的 Android Studio 中启动 AVD 时出错

android - 无法在ubuntu中启动模拟器设备

java - 从 SQL 数据库中删除条目后出现空指针异常

java - toString 返回不同的值

java.lang.UnsupportedOperationException : Can't convert to color: type=0x2 on setErrorEnabled for InputTextLayout 异常

android - 如何使图像在某种程度上不透明?

java - android scala eclipse 插件的 searchView 小部件中的过滤方法