Possible fix for https://code.google.com/p/android/issues/detail?id=152085

There is a bug identified in Android NetworkInfo API (http://developer.android.com/reference/android/net/NetworkInfo.html) since Android Lollipop 5.0.0 release. On Android 4.4 and prior, the NetworkInfo API was correctly reporting disconnection reason. In Android 5.0+, this NetworkInfo API does not correctly report the reason of disconnection.

The submitted framework modification appears to fix this issue and report the reason.

Change-Id: I4d2d1a03cee7faf89c08298a83de67028714eac7
Signed-off-by: Vipin Sapra <vipin.sapra@gmail.com>
diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
index 21bc671..dfe8236 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
@@ -1740,8 +1740,14 @@
         @Override
         public void exit() {
             if (DBG) log("DcActiveState: exit dc=" + this);
+            String reason = mNetworkInfo.getReason();
+            if (mDisconnectParams != null && mDisconnectParams.mReason != null) {
+                reason = mDisconnectParams.mReason;
+            } else if (mDcFailCause != null) {
+                reason = mDcFailCause.toString();
+            }
             mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.DISCONNECTED,
-                    mNetworkInfo.getReason(), mNetworkInfo.getExtraInfo());
+                    reason, mNetworkInfo.getExtraInfo());
             mNetworkAgent.sendNetworkInfo(mNetworkInfo);
             mNetworkAgent = null;
         }