Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Internet签入对话框_Android_Android Studio_Broadcastreceiver - Fatal编程技术网

Android Internet签入对话框

Android Internet签入对话框,android,android-studio,broadcastreceiver,Android,Android Studio,Broadcastreceiver,我创建了一个项目,其中它使用广播接收器检查连续的互联网连接。 现在,如果internet可用,它将不显示任何内容,但当我通过从通知滚动关闭internet连接时,它将显示我的警报框,错误为没有internet连接。但当我从滚动不操作再次打开internet时,我的警报框将保留在屏幕上如何关闭警报框 我试着去照顾我的孩子 //代码 private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { public

我创建了一个项目,其中它使用广播接收器检查连续的互联网连接。 现在,如果internet可用,它将不显示任何内容,但当我通过从通知滚动关闭internet连接时,它将显示我的警报框,错误为没有internet连接。但当我从滚动不操作再次打开internet时,我的警报框将保留在屏幕上如何关闭警报框

我试着去照顾我的孩子

//代码

 private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
            String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
            boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);

            NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);



            if(currentNetworkInfo.isConnected()){

               // alertDialog.dismiss(); not working showing Error
//Attempt to invoke virtual method 'void androidx.appcompat.app.AlertDialog.dismiss()' on a null object reference
                // Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();



            }
               else{
 alerDialogbuilder = new AlertDialog.Builder(Registration.this);
            alerDialogbuilder.setTitle("Internet / Wifi Connection Error ! ");
            alerDialogbuilder.setMessage("Turn on Wifi/Internet ");

            alerDialogbuilder.setCancelable(false);
            alerDialogbuilder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    startActivityForResult(new Intent(Settings.ACTION_WIFI_SETTINGS), 0);

                }
            });
            alerDialogbuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Intent iteer = new Intent(Registration.this, MainActivity.class);
                    startActivity(iteer);
                    overridePendingTransition(R.anim.from_left, R.anim.slide_to_right);
                    finish();
                }
            });

            alertDialog = alerDialogbuilder.create();
                alertDialog.show();
            }
        }
    };
//查阅简历

@Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "onResume");
        this.registerReceiver(this.mConnReceiver,
                new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }
//内部创建

 this.registerReceiver(this.mConnReceiver,
                new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
这样做

像这样在onCreate()中启动警报对话框,使用现有代码一次又一次地创建警报对话框的新实例,这就是Disclease()不起作用的原因

onCreate(){
 alerDialogbuilder = new AlertDialog.Builder(Registration.this);
            alerDialogbuilder.setTitle("Internet / Wifi Connection Error ! ");
            alerDialogbuilder.setMessage("Turn on Wifi/Internet ");

            alerDialogbuilder.setCancelable(false);
            alerDialogbuilder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    startActivityForResult(new Intent(Settings.ACTION_WIFI_SETTINGS), 0);

                }
            });
            alerDialogbuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Intent iteer = new Intent(Registration.this, MainActivity.class);
                    startActivity(iteer);
                    overridePendingTransition(R.anim.from_left, R.anim.slide_to_right);
                    finish();
                }
            });

            alertDialog = alerDialogbuilder.create();

}
你的广播接收器是这样的

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
            String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
            boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);

            NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);



            if(currentNetworkInfo.isConnected()){

              //dismiss dialog here
                alertDialog.dismiss();



            }
               else{
 //show dialog here
                alertDialog.show();
            }
        }
    };
//unregister broadtcast here
@Override
protected void onDestroy() {
    super.onDestroy();
    if (this.mConnReceiver != null) {
        unregisterReceiver(this.mConnReceiver);
    }


}
重要通知:-

在onStop()中注销广播接收器,否则将出现 异常和崩溃

不要在ONRESUME()中再次注册接收器。


它对我有用,但能帮我解决如何停止广播接收器的问题吗??如果我没有在androidSure中使用广播接收器,我会更新代码,如果你抛出异常,应用程序可能会崩溃,你必须注销广播接收器,你能帮我解决这个问题吗??