Android 如何检查像YouTube这样的网络连接?

Android 如何检查像YouTube这样的网络连接?,android,netconnection,Android,Netconnection,我正在研究检查互联网连接的能力,就像YouTube目前在Android应用程序上所做的那样 问题是,如果互联网可用,它每次都显示为在线。 我想让它看起来好像它已经在线,不显示任何消息,但当不在线时,然后每次都显示它 这是我的主要活动代码: 公共类LoginActivity扩展AppCompatActivity实现NetworkReceiver.ConnectionChangeCallback{ @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.o

我正在研究检查互联网连接的能力,就像YouTube目前在Android应用程序上所做的那样

问题是,如果互联网可用,它每次都显示为在线。 我想让它看起来好像它已经在线,不显示任何消息,但当不在线时,然后每次都显示它

这是我的主要活动代码:

公共类LoginActivity扩展AppCompatActivity实现NetworkReceiver.ConnectionChangeCallback{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
IntentFilter intentFilter02=新的IntentFilter(“android.net.conn.CONNECTIVITY_CHANGE”);
networkReceiver=新的networkReceiver();
registerReceiver(networkReceiver,intentFilter02);
networkReceiver.setConnectionChangeCallback(此);
}
@凌驾
连接更改上的公共void(布尔值未连接){
如果(未连接){
//当互联网消失时将被调用。
tv_check_connection.setText(“返回联机”);
connection.setBackgroundColor(Color.parseColor(“#00BE84”);
连接。启动(向下滑动);
电视检查连接。设置彩色(彩色。白色);
Handler=newhandler();
Runnable delayrunnable=new Runnable(){
@凌驾
公开募捐{
电视检查连接。设置可见性(查看。消失);
}
};
handler.postDelayed(delayrunnable,4000);
}否则{
//将在internet恢复时调用
新建MyDialog().show(getSupportFragmentManager(),“我的对话”);
tv_check_connection.setText(“无连接”);
电视检查连接。设置可见性(视图。可见);
连接。启动(向下滑动);
connection.setBackgroundColor(Color.parseColor(“#2D2D2D”);
电视检查连接。设置彩色(彩色。白色);
}
}
}
这是我的NetworkReceiver类:

公共类NetworkReceiver扩展了BroadcastReceiver{
公共静态最终字符串NETWORK\u AVAILABLE\u ACTION=“com.example.ritecare.NetworkAvailable”;
公共静态最终字符串为\u NETWORK\u AVAILABLE=“isNetworkAvailable”;
ConnectionChangeCallback ConnectionChangeCallback;
@凌驾
公共void onReceive(上下文、意图){
意向网络状态意向=新意向(网络可用动作);
networkstateentent.putExtra(网络可用吗,isOnline(上下文));
LocalBroadcastManager.getInstance(上下文).sendBroadcast(networkStateIntent);
if(connectionChangeCallback!=null){
onConnectionChangeCallback.onConnectionChange(isOnline(context));
}
}
专用布尔isOnline(上下文){
试一试{
if(上下文!=null){
ConnectivityManager ConnectivityManager=(ConnectivityManager)context.getSystemService(CONNECTIVITY_服务);
NetworkInfo NetworkInfo=connectivityManager.getActiveNetworkInfo();
//布尔值isConnected=networkInfo!=null&&networkInfo.isConnectedOrConnecting();
返回networkInfo!=null&&networkInfo.isConnected();
}
返回false;
}捕获(例外e){
Log.e(NetworkReceiver.class.getName(),e.getMessage());
返回false;
}
}
public void setConnectionChangeCallback(ConnectionChangeCallback ConnectionChangeCallback){
this.connectionChangeCallback=connectionChangeCallback;
}
公共接口ConnectionChangeCallback{
连接更改无效(布尔值未连接);
}
}

如何实现这一点?

删除
static
表单视图。将视图作为参数传入方法
对话框03

检查此代码

 TextView tv_check_connection; 
 LinearLayout connection;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sample);

    tv_check_connection = (TextView) findViewById(R.id.tv_check_connection_opdipd);
    connection = (LinearLayout) findViewById(R.id.check_connection_opdipd);

// for calling dialog03 method
// dialog03(true, tv_check_connection, connection );
}

public static void dialog03(boolean value, TextView tvCheckConnection, LinearLayout connectionLayout) {


    if (value) {
        tvCheckConnection.setText("Back online");
        connectionLayout.setBackgroundColor(Color.parseColor("#00BE84"));
        connectionLayout.startAnimation(slideDownToUp);
        tvCheckConnection.setTextColor(Color.WHITE);

        Handler handler = new Handler();
        Runnable delayrunnable = new Runnable() {
            @Override
            public void run() {
                if(tvCheckConnection != null){
                   tvCheckConnection.setVisibility(View.GONE);
                }
            }
        };
        handler.postDelayed(delayrunnable, 4000);
    } else {
        tvCheckConnection.setVisibility(View.VISIBLE);
        tvCheckConnection.setText("No connection");
        connectionLayout.startAnimation(slideDownToUp);
        connectionLayout.setBackgroundColor(Color.parseColor("#2D2D2D"));
        tvCheckConnection.setTextColor(Color.WHITE);

    }
}

当您在延迟一段时间后更新视图的可见性时,请检查视图的安全方式是否为空。

在TextViews之前删除静态单词,但它在dialog03()方法中导致错误我无法或必须在onCreate中调用dialog方法,我有一个类App.class和NetworkReceiver.class来处理它。错误是,如果要从另一个类调用
dialog03
方法而不是将
Broadcast
发送到Activity,则需要最终文本视图。在收到广播后,在活动调用对话框03中。调用
活动的
静态
方法
表单是不好的class@Abu_Yousuf我的问题变了,你能帮我吗!当您从
网络接收器
发送广播时,请在
活动
中接收该广播,并根据需要显示对话框。