From 02bb5eb7f7b18239640476ac79c6106cb126a221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9C=E6=96=B9=E5=A4=95=E9=98=B3?= Date: Wed, 12 Jun 2019 15:22:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96android=20sdk=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cim/sdk/android/CIMConnectorManager.java | 5 +---- .../android/CIMEventBroadcastReceiver.java | 21 +++++++----------- .../cim/sdk/android/CIMPushManager.java | 13 +++++++++++ .../app/libs/cim-android-sdk-3.7.0.jar | Bin 94864 -> 94820 bytes 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java b/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java index 8301349..79deda1 100644 --- a/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java +++ b/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java @@ -47,7 +47,6 @@ import com.farsunset.cim.sdk.android.model.SentBody; import android.content.Context; import android.content.Intent; -import android.net.ConnectivityManager; import android.os.Handler; import android.os.HandlerThread; import android.os.Process; @@ -136,9 +135,7 @@ class CIMConnectorManager{ public void connect(final String host, final int port) { - boolean isNetworkConnected = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetwork() != null; - - if (!isNetworkConnected) { + if (!CIMPushManager.isNetworkConnected(context)) { Intent intent = new Intent(); intent.setPackage(context.getPackageName()); diff --git a/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java b/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java index aebb1b1..427dbcd 100644 --- a/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java +++ b/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java @@ -30,7 +30,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.os.Build; /** @@ -61,9 +60,7 @@ public abstract class CIMEventBroadcastReceiver extends BroadcastReceiver { if (intent.getAction().equals(CIMConstant.IntentAction.ACTION_NETWORK_CHANGED) ||intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { - ConnectivityManager connectivityManager = (ConnectivityManager) context - .getSystemService(Context.CONNECTIVITY_SERVICE); - onDevicesNetworkChanged(connectivityManager.getActiveNetworkInfo()); + onDevicesNetworkChanged(); } /* @@ -133,9 +130,8 @@ public abstract class CIMEventBroadcastReceiver extends BroadcastReceiver { private void onInnerConnectionClosed() { CIMCacheManager.putBoolean(context, CIMCacheManager.KEY_CIM_CONNECTION_STATE, false); - boolean isNetworkConnected = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetwork() != null; - if (isNetworkConnected) { + if (CIMPushManager.isNetworkConnected(context)) { CIMPushManager.connect(context, 0); } @@ -143,9 +139,8 @@ public abstract class CIMEventBroadcastReceiver extends BroadcastReceiver { } private void onConnectionFailed(long reinterval) { - boolean isNetworkConnected = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetwork() != null; - if (isNetworkConnected) { + if (CIMPushManager.isNetworkConnected(context)) { onConnectionFailed(); CIMPushManager.connect(context, reinterval); @@ -159,13 +154,13 @@ public abstract class CIMEventBroadcastReceiver extends BroadcastReceiver { onConnectionSuccessed(autoBind); } - private void onDevicesNetworkChanged(NetworkInfo info) { + private void onDevicesNetworkChanged() { - if (info != null) { + if (CIMPushManager.isNetworkConnected(context)) { CIMPushManager.connect(context, 0); } - onNetworkChanged(info); + onNetworkChanged(); } private void onInnerMessageReceived(com.farsunset.cim.sdk.android.model.Message message, Intent intent) { @@ -183,8 +178,8 @@ public abstract class CIMEventBroadcastReceiver extends BroadcastReceiver { public abstract void onMessageReceived(com.farsunset.cim.sdk.android.model.Message message, Intent intent); - public void onNetworkChanged(NetworkInfo info) { - CIMListenerManager.notifyOnNetworkChanged(info); + public void onNetworkChanged() { + CIMListenerManager.notifyOnNetworkChanged(CIMPushManager.getNetworkInfo(context)); } public void onConnectionSuccessed(boolean hasAutoBind) { diff --git a/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java b/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java index 65ff4e2..3296a1d 100644 --- a/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java +++ b/cim-client-sdk/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java @@ -27,6 +27,8 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.os.Build; import android.text.TextUtils; @@ -241,7 +243,16 @@ public class CIMPushManager { public static boolean isConnected(Context context) { return CIMCacheManager.getBoolean(context, CIMCacheManager.KEY_CIM_CONNECTION_STATE); } + + public static boolean isNetworkConnected(Context context) { + NetworkInfo networkInfo = getNetworkInfo(context); + return networkInfo != null && networkInfo.isConnected(); + } + public static NetworkInfo getNetworkInfo(Context context) { + return ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); + } + private static String getVersionName(Context context) { String versionName = null; try { @@ -259,5 +270,7 @@ public class CIMPushManager { context.startService(intent); } } + + } diff --git a/cim-use-examples/cim-client-android/app/libs/cim-android-sdk-3.7.0.jar b/cim-use-examples/cim-client-android/app/libs/cim-android-sdk-3.7.0.jar index d3328ad6f39d55d92bfa794b6b7b7e905a72bfa3..768d00ece1b3e8be7f0aaf61696fe71cbb28f8bc 100644 GIT binary patch delta 16392 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 delta 16558 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