Occasional crash when placing calls
Reports from the Play Store show occasional crash or hangs when placing calls in the Telecom API.
Exception java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at android.os.Parcel.createException (Parcel.java:2080)
at android.os.Parcel.readException (Parcel.java:2042)
at android.os.Parcel.readException (Parcel.java:1990)
at com.android.internal.telecom.ITelecomService$Stub$Proxy.placeCall (ITelecomService.java:2495)
at android.telecom.TelecomManager.placeCall (TelecomManager.java:1848)
at cx.ring.services.CallServiceImpl.requestPlaceCall (CallServiceImpl.java:110)
at net.jami.services.CallService.placeCallIfAllowed (CallService.java:212)
at net.jami.call.CallPresenter.initOutGoing (CallPresenter.kt:99)
at cx.ring.fragments.CallFragment.initializeCall (CallFragment.kt:1233)
at cx.ring.fragments.CallFragment.prepareCall (CallFragment.kt:1216)
at cx.ring.fragments.CallFragment.initPresenter (CallFragment.kt:144)
at cx.ring.fragments.CallFragment.initPresenter (CallFragment.kt:95)
at cx.ring.mvp.BaseSupportFragment.onViewCreated (BaseSupportFragment.kt:34)
at cx.ring.fragments.CallFragment.onViewCreated (CallFragment.kt:218)
at androidx.fragment.app.Fragment.performViewCreated (Fragment.java:3128)
at androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:552)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:261)
at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:1890)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1808)
at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1751)
at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2976)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:2886)
at androidx.fragment.app.FragmentController.dispatchActivityCreated (FragmentController.java:263)
at androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:351)
at androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:251)
at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1432)
at android.app.Activity.performStart (Activity.java:7923)
at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3359)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2068)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:224)
at android.app.ActivityThread.main (ActivityThread.java:7551)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:995)
Caused by android.os.RemoteException: Remote stack trace:
at android.telephony.PhoneNumberUtils.getNumberFromIntent (PhoneNumberUtils.java:205)
at com.android.server.telecom.PhoneNumberUtilsAdapterImpl.getNumberFromIntent (PhoneNumberUtilsAdapterImpl.java:51)
at com.android.server.telecom.components.UserCallIntentProcessor.processOutgoingCallIntent (UserCallIntentProcessor.java:174)
at com.android.server.telecom.components.UserCallIntentProcessor.processIntent (UserCallIntentProcessor.java:141)
at com.android.server.telecom.TelecomServiceImpl$1.placeCall (TelecomServiceImpl.java:1364)
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:868)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly (AbstractQueuedSynchronizer.java:1023)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly (AbstractQueuedSynchronizer.java:1334)
at java.util.concurrent.CountDownLatch.await (CountDownLatch.java:232)
at io.reactivex.rxjava3.internal.observers.BlockingBaseObserver.blockingGet (BlockingBaseObserver.java:72)
at io.reactivex.rxjava3.core.Observable.blockingFirst (Observable.java:5454)
at cx.ring.service.ConnectionService.buildConnection (ConnectionService.kt:59)
at cx.ring.service.ConnectionService.buildConnection$default (ConnectionService.kt:53)
at cx.ring.service.ConnectionService.onCreateOutgoingConnection (ConnectionService.kt:76)
at android.telecom.ConnectionService.createConnection (ConnectionService.java:1955)
at android.telecom.ConnectionService.access$400 (ConnectionService.java:95)
at android.telecom.ConnectionService$2.handleMessage (ConnectionService.java:870)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:246)
at android.app.ActivityThread.main (ActivityThread.java:8653)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)