|
@@ -0,0 +1,106 @@
|
|
|
+package com.xplora.xpchat.activity;
|
|
|
+
|
|
|
+import android.database.ContentObserver;
|
|
|
+import android.net.Uri;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.Looper;
|
|
|
+import android.os.Message;
|
|
|
+import android.provider.Settings;
|
|
|
+import android.util.Log;
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+
|
|
|
+import com.xplora.xpchat.R;
|
|
|
+import com.xplora.xpchat.fragment.NetworkProblemFragment;
|
|
|
+import com.xplora.xpchat.utils.Constant;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+public class BaseNetworkActivity extends BaseActivity {
|
|
|
+ private NetworkStatusObserver mNetworkStatusObserver = null;
|
|
|
+ public static final String NETWORK_STATUS = "network_status";
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreateBase() {
|
|
|
+ super.onCreateBase();
|
|
|
+ //判断是否需要弹窗提示网络问题
|
|
|
+ checkNetworkProblem();
|
|
|
+ //监听网络字段
|
|
|
+ registerNetworkStatus();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void checkNetworkProblem() {
|
|
|
+ if (getNetworkStatus() >= 1)
|
|
|
+ return;
|
|
|
+ showNetworkProblemView();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void registerNetworkStatus() {
|
|
|
+ mNetworkStatusObserver = new NetworkStatusObserver(mHandler);
|
|
|
+ getContentResolver().registerContentObserver(
|
|
|
+ Settings.Global.getUriFor(NETWORK_STATUS), false, mNetworkStatusObserver);
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getNetworkStatus() {
|
|
|
+ return Settings.Global.getInt(this.getContentResolver(), NETWORK_STATUS, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ void showNetworkProblemView() {
|
|
|
+ NetworkProblemFragment fragment = NetworkProblemFragment.newInstance(this);
|
|
|
+ fragment.show(this.getFragmentManager(), Constant.PACKAGE_NAME);
|
|
|
+ }
|
|
|
+
|
|
|
+ void showNetworkProblemToast() {
|
|
|
+ toast(getString(R.string.network_problem));
|
|
|
+ }
|
|
|
+
|
|
|
+ void onNetworkProblemChange(int status) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onDestroyBase() {
|
|
|
+ super.onDestroyBase();
|
|
|
+ if (mNetworkStatusObserver != null) {
|
|
|
+ getContentResolver().unregisterContentObserver(mNetworkStatusObserver);
|
|
|
+ }
|
|
|
+ mNetworkStatusObserver = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ Handler mHandler = new Handler(Looper.myLooper()) {
|
|
|
+ @Override
|
|
|
+ public void handleMessage(@NonNull Message msg) {
|
|
|
+ super.handleMessage(msg);
|
|
|
+
|
|
|
+ if (msg.what == 10010) {
|
|
|
+ int status = getNetworkStatus();
|
|
|
+ onNetworkProblemChange(status);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public class NetworkStatusObserver extends ContentObserver {
|
|
|
+ private Handler mObserverHandler = null;
|
|
|
+ public NetworkStatusObserver(Handler handler) {
|
|
|
+ super(handler);
|
|
|
+ mObserverHandler = handler;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onChange(boolean selfChange, Uri uri) {
|
|
|
+ Log.d(TAG, "onChange :" + uri);
|
|
|
+ super.onChange(selfChange, uri);
|
|
|
+
|
|
|
+ if (uri == null)
|
|
|
+ return;
|
|
|
+
|
|
|
+ mObserverHandler.postDelayed(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ mObserverHandler.sendEmptyMessage(10010);
|
|
|
+ }
|
|
|
+ }, 10);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|