瀏覽代碼

Merge pull request #2005 from nextcloud/bugfix/1978/fixNPEpeerConnectionWrapper

Bugfix/1978/fix npe in peerConnectionWrapper
Andy Scherzinger 3 年之前
父節點
當前提交
973d13f902
共有 1 個文件被更改,包括 25 次插入16 次删除
  1. 25 16
      app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

+ 25 - 16
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

@@ -49,6 +49,7 @@ import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
 import android.widget.FrameLayout;
 import android.widget.RelativeLayout;
+import android.widget.Toast;
 
 import com.bluelinelabs.logansquare.LoganSquare;
 import com.nextcloud.talk.R;
@@ -633,23 +634,23 @@ public class CallActivity extends CallBaseActivity {
         binding.conversationRelativeLayout
             .getViewTreeObserver()
             .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
-            @Override
-            public void onGlobalLayout() {
-                binding.conversationRelativeLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
-                int height = binding.conversationRelativeLayout.getMeasuredHeight();
-                binding.gridview.setMinimumHeight(height);
-            }
-        });
+                @Override
+                public void onGlobalLayout() {
+                    binding.conversationRelativeLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                    int height = binding.conversationRelativeLayout.getMeasuredHeight();
+                    binding.gridview.setMinimumHeight(height);
+                }
+            });
 
         binding
             .callInfosLinearLayout
             .getViewTreeObserver()
             .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
-            @Override
-            public void onGlobalLayout() {
-                binding.callInfosLinearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
-            }
-        });
+                @Override
+                public void onGlobalLayout() {
+                    binding.callInfosLinearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                }
+            });
 
         participantsAdapter = new ParticipantsAdapter(
             this,
@@ -1593,9 +1594,9 @@ public class CallActivity extends CallBaseActivity {
 
             if ("unshareScreen".equals(type) ||
                 (("offer".equals(type) ||
-                  "answer".equals(type) ||
-                  "candidate".equals(type) ||
-                  "endOfCandidates".equals(type)) &&
+                    "answer".equals(type) ||
+                    "candidate".equals(type) ||
+                    "endOfCandidates".equals(type)) &&
                     peerConnectionWrapper != null)) {
                 switch (type) {
                     case "unshareScreen":
@@ -1692,7 +1693,7 @@ public class CallActivity extends CallBaseActivity {
             endPeerConnection(peerConnectionWrapperList.get(i).getSessionId(), false);
         }
 
-        if(localStream != null) {
+        if (localStream != null) {
             localStream.dispose();
             localStream = null;
             Log.d(TAG, "Disposed localStream");
@@ -1885,6 +1886,14 @@ public class CallActivity extends CallBaseActivity {
         if ((peerConnectionWrapper = getPeerConnectionWrapperForSessionIdAndType(sessionId, type)) != null) {
             return peerConnectionWrapper;
         } else {
+            if (peerConnectionFactory == null) {
+                Log.e(TAG, "peerConnectionFactory was null in getOrCreatePeerConnectionWrapperForSessionIdAndType.");
+                Toast.makeText(context, context.getResources().getString(R.string.nc_common_error_sorry),
+                               Toast.LENGTH_LONG).show();
+                hangup(true);
+                return null;
+            }
+
             if (hasMCU && publisher) {
                 peerConnectionWrapper = new PeerConnectionWrapper(peerConnectionFactory,
                                                                   iceServers,