Is it because of permissions?
I have granted READ_SMS , RECEIVE_SMS, READ_PHONE_STATE permissions at the run-time but still its crashing.
12-26 10:56:02.409 30698-30698/? E/UncaughtException: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=55, result=0, data=null} to activity {com.app.eco4ndly.pathshala/com.app.eco4ndly.pathshala.Opening_Screen}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
                                                      at android.app.ActivityThread.deliverResults(ActivityThread.java:4255)
                                                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:4298)
                                                      at android.app.ActivityThread.-wrap20(ActivityThread.java)
                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1613)
                                                      at android.os.Handler.dispatchMessage(Handler.java:110)
                                                      at android.os.Looper.loop(Looper.java:203)
                                                      at android.app.ActivityThread.main(ActivityThread.java:6339)
                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084)
                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945)
                                                   Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
                                                      at com.app.eco4ndly.pathshala.Opening_Screen.onActivityResult(Opening_Screen.java:108)
                                                      at android.app.Activity.dispatchActivityResult(Activity.java:6948)
                                                      at android.app.ActivityThread.deliverResults(ActivityThread.java:4251)
                                                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:4298) 
                                                      at android.app.ActivityThread.-wrap20(ActivityThread.java) 
                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1613) 
                                                      at android.os.Handler.dispatchMessage(Handler.java:110) 
                                                      at android.os.Looper.loop(Looper.java:203) 
                                                      at android.app.ActivityThread.main(ActivityThread.java:6339) 
                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084) 
                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945) 
What else needed to be done?
UPDATE
in Openning_Screen.java
private void attemptsRegistration() {
    Intent intent = new Intent(Opening_Screen.this,PhoneVerification.class);
    intent.putExtra(Constant.REQUEST_CODE,55);
    startActivityForResult(intent,55);
}
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        final View view = findViewById(android.R.id.content);
        if (requestCode == 55){
            String result = data.getStringExtra("result");
            if (result.equals("PhoneVerifiedSuccessfully")){
                RegistrationDataPass.setPhone(data.getStringExtra("phone"));
                Intent i = new Intent(Opening_Screen.this,RegPage1.class);
                i.putExtra("PhoneNumber",data.getStringExtra("phone"));
                startActivity(i);
            }else if (result.equals("InvalidCode")){
                Constant.showSnak(view,"Registration Failed\nInvalid Code");
            }else if (result.equals("INVALID REQUEST")){
                Constant.showSnak(view,"Registration Failed\nINVALID REQUEST");
            }else if (result.equals("Too many Request")){
                Constant.showSnak(view,"Registration Failed\nToo many Requests");
            }
        }
}
Phone_Verification.java code is huge I'm explaining how it works.
When it starts I'm checking for permissions for marshmallow then after all permissions are granted the phone number is taken as input from user and then its going to verifyPhone()
public void verifyPhone(String phn, PhoneAuthProvider.OnVerificationStateChangedCallbacks _mCallbacks){
    mCallbacksResend = _mCallbacks;
    Constant.showProgressBar(this,"You will receive an OTP in "+phn);
    Log.e("STEP Inside ver pn",phn);
    PhoneAuthProvider.getInstance().verifyPhoneNumber(
            phn,        // Phone number to verify
            60,                 // Timeout duration
            TimeUnit.SECONDS,   // Unit of timeout
            this,               // Activity (for callback binding)
            _mCallbacks);        // OnVerificationStateChangedCallback
}
And the verification call back is like this
final PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallBacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
        @Override
        public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
            //progressDialog.dismiss();
            Log.d("JEJE", "onVerificationCompleted:" + phoneAuthCredential);
            Log.e("STEP in signin","InsideVerification");
            signInWithPhoneAuthCredential(phoneAuthCredential);
        }
        @Override
        public void onVerificationFailed(FirebaseException e) {
            Constant.hideProgressBar();
            Log.w("JEJE", "onVerificationFailed", e);
            if (e instanceof FirebaseAuthInvalidCredentialsException) {
                Log.d("JEJE", "INVALID REQUEST");
                Intent intent = new Intent();
                intent.putExtra("result","INVALID REQUEST");
                intent.putExtra("phone",phoneNumber);
                setResult(REQ_CODE,intent);
            } else if (e instanceof FirebaseTooManyRequestsException) {
                Log.d("JEJE", "Too many Request");
                Intent intent = new Intent();
                intent.putExtra("result","Too many Request");
                intent.putExtra("phone",phoneNumber);
                setResult(REQ_CODE,intent);
            }
            showSnakBar(e.toString());
            //hideProgressDialog();
            Constant.hideProgressBar();
            Toast.makeText(PhoneVerification.this, "Failed", Toast.LENGTH_SHORT).show();
            finish();
        }
        @Override
        public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
            super.onCodeSent(s, forceResendingToken);
            //hideProgressDialog();
            Constant.hideProgressBar();
            Log.d("JEJE", "onCodeSent:" + s);
            mResendToken = forceResendingToken;
            tv.setText("We have sent a verification Code to your number "+phoneNumber+" via SMS.\nEnter the CODE bellow");
            phoneNumLayout.setVisibility(View.GONE);
            otpLayout.setVisibility(View.VISIBLE);
            verifyToken = s;
            showTimer();
        }
    };
The app is crashing after showing the the progress bar in verifyPhone(). No code is being sent.