Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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 安卓网络监听器_Android_Networking_Android Intent_Broadcastreceiver - Fatal编程技术网

Android 安卓网络监听器

Android 安卓网络监听器,android,networking,android-intent,broadcastreceiver,Android,Networking,Android Intent,Broadcastreceiver,请帮忙解决这个问题。 任务:创建网络侦听器。当Internet丢失时,显示ProgressDialog ProgressDialog dialog; private IntentFilter mNetworkStateChangedFilter; private BroadcastReceiver mNetworkStateIntentReceiver; @Override public void onCreate(Bundle savedInstanceState) {

请帮忙解决这个问题。 任务:创建网络侦听器。当Internet丢失时,显示ProgressDialog

ProgressDialog dialog;
private IntentFilter mNetworkStateChangedFilter;
private BroadcastReceiver mNetworkStateIntentReceiver;


@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mNetworkStateChangedFilter = new IntentFilter();
        mNetworkStateChangedFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

        mNetworkStateIntentReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {



            if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
                NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
                mTypeName = info.getTypeName();
                mSubtypeName = info.getSubtypeName();
                mAvailable = info.isAvailable();

                Log.i(LOGTAG, "Network Type: " + mTypeName 
                    + ", subtype: " + mSubtypeName
                    + ", available: " + mAvailable + " isConnected: " + info.isConnected());
                if (!info.isConnected()){
                    try{
                    showDialog();
                    }catch (Exception e){

                    }

                    }
                else if (info.isConnected()){
                        dismissDialog();    
                }

            }
            }
        };

        setContentView(R.layout.activity_main);
    }
检查模拟器。我进入设置(暂停操作),拔下互联网,返回(恢复)-创建对话,没关系。再次在设置中,打开互联网,对话仍然存在

@Override
    protected void onPause() {
        Log.d(LOGTAG, "onPause");
        super.onPause();
        unregisterReceiver(mNetworkStateIntentReceiver);
    };
    @Override
    protected void onResume() { 
        Log.d(LOGTAG, "onResume");
        super.onResume();
        registerReceiver(mNetworkStateIntentReceiver, mNetworkStateChangedFilter);
        unregisterReceiver(mNetworkStateIntentReceiver);
        registerReceiver(mNetworkStateIntentReceiver, mNetworkStateChangedFilter);
    };



public void showDialog() {
        dialog = ProgressDialog.show(this, "", "");
    }

public void dismissDialog() {
    try {
        dialog.dismiss();
    } catch (Exception e) {
        Log.i(LOGTAG, e.getMessage()); //Crash application
    }

    }
尝试调试失败<代码>Log.i(LOGTAG,e.getMessage())导致应用程序崩溃

java.lang.RuntimeException:在com.t.network.MainActivity中接收广播意图{act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000000(具有额外功能)}时出错$1@40519848


原因:java.lang.NullPointerException:println需要一条消息

如何使用Progress/Allert对话框收听连接

谢谢

附言

正常工作


p.p.S.我为我的英语道歉:)

“原因:java.lang.NullPointerException:println需要一条消息”->尝试使用e.printStackTrace()而不是e.getMessage(),您尝试的是
字符串err=(e.getMessage()==null)?“错误测试错误”:e.getMessage();Log.e(LOGTAG,err)?对话框未关闭
public void showDialog(){dialog=new ProgressDialog(this);dialog.setMessage(“message”);dialog.setCancelable(false);dialog.show();}public void dismissDialog(){try{if(dialog!=null){dialog.dismise();dialog=null;}}catch(异常e){e.printStackTrace();}
-无错误。但对话打开了…问题解决了<代码>公共无效dismissDialog(){try{if(dialog!=null){dialog.dismise();dialog=null;}}}捕获(异常e){e.printStackTrace();}}
并在showDialog()、onPause()和onResume()方法中调用dismissDialog()。谢谢大家
Log.i(LOGTAG, "Network Type: " + mTypeName 
                    + ", subtype: " + mSubtypeName
                    + ", available: " + mAvailable + " isConnected: " + info.isConnected());