title: How to ask permission to make phone call from Android from Android version Marshmallow onwards?
body: <p>I am trying to make a phone call from Android, and I've set run time permissions as well. And it asks whether to allow making phone calls. But when I press allow, the app crashes:</p>
  
  <p>This is how I implemented it:</p>
  
  <pre><code>private static final int REQUEST_PHONE_CALL = 1;
  Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "+918511812660"));
  
  if (android.os.Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) {
      if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
          ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE},REQUEST_PHONE_CALL);
      }
      else
      {
          startActivity(intent);
      }
  }
  else
  {
      startActivity(intent);
  }
  </code></pre>
  
  <p><br></p>
  
  <pre><code>@Override
  public void onRequestPermissionsResult(int requestCode,
                                         String permissions[], int[] grantResults) {
      switch (requestCode) {
          case REQUEST_PHONE_CALL: {
              if (grantResults.length &gt; 0 &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                  startActivity(intent);
              }
              else
              {
  
              }
              return;
          }
      }
  }
  </code></pre>
  
  <p>This is what I obtain in logcat: </p>
  
  <pre><code>java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, 
       request=1, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} 
       to activity {com.devpost.airway/com.devpost.airway.activities.MainActivity}: 
       java.lang.NullPointerException: Attempt to invoke virtual method 
       'java.lang.String android.content.Intent.toString()' on a null object reference
  
        at android.app.ActivityThread.deliverResults(ActivityThread.java:3733)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776)
        at android.app.ActivityThread.-wrap16(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5461)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  
  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 
      'java.lang.String android.content.Intent.toString()' on a null object reference
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
        at android.app.Activity.startActivityForResult(Activity.java:3930)
        at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
        at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
        at android.app.Activity.startActivityForResult(Activity.java:3890)
        at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:856)
        at android.app.Activity.startActivity(Activity.java:4213)
        at android.app.Activity.startActivity(Activity.java:4181)
        at com.devpost.airway.activities.MainActivity.onRequestPermissionsResult(MainActivity.java:140)
        at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:6582)
        at android.app.Activity.dispatchActivityResult(Activity.java:6460)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:3729)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776) 
        at android.app.ActivityThread.-wrap16(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5461) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
  </code></pre>
  
  <p>What is possibly causing this?</p>