title: "Attempt to get length of null array" on Permission run time
body: <p>I am having some problem running my basic run time permission project.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>@Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
      //Initializing button
      buttonRequestPermission = (Button) findViewById(R.id.buttonRequestPermission);
  
      //Adding a click listener
      buttonRequestPermission.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              //First checking if the app is already having the permission
              if (isReadStorageAllowed()) {
                  //If permission is already having then showing the toast
                  Toast.makeText(MainActivity.this, "You already have the permission", Toast.LENGTH_LONG).show();
                  //Existing the method with return
                  return;
              }
  
              //If the app has not the permission then asking for the permission
              requestStoragePermission();
          }
      });
  }
  
  //We are calling this method to check the permission status
  private boolean isReadStorageAllowed() {
      //Getting the permission status
      int result = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
  
      //If permission is granted returning true
      if (result == PackageManager.PERMISSION_GRANTED)
          return true;
  
      //If permission is not granted returning false
      return false;
  }
  public void requestStoragePermission() {
  
      if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
  
      }
  
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);
  }
  
  @Override
  public void onRequestPermissionsResult(int requestCode,  String[] permissions,  int[] grantResults) {
      //Checking the request code of our request
      if (requestCode == STORAGE_PERMISSION_CODE) {
  
          //If permission is granted
          if (grantResults.length &gt; 0 &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  
              //Displaying a toast
              Toast.makeText(this, "Permission granted now you can read the storage", Toast.LENGTH_LONG).show();
          } else {
              //Displaying another toast if permission is not granted
              Toast.makeText(this, "Oops you just denied the permission", Toast.LENGTH_LONG).show();
          }
      }
  }
  </code></pre>
  
  <p>In this  function, the program seems to crash in the <strong>requestPermissions()</strong> function. </p>
  
  <p>When I test the app on a device, the app crashes and returns "Unfortunately, Package installation has stopped". Then gives me this logcat error:</p>
  
  <pre><code>Process: com.google.android.packageinstaller, PID: 17894
  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity}: java.lang.NullPointerException: Attempt to get length of null array
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2477)
     at android.app.ActivityThread.access$900(ActivityThread.java:150)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:148)
     at android.app.ActivityThread.main(ActivityThread.java:5418)
     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 get length of null array
     at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.computePermissionGrantState(GrantPermissionsActivity.java:312)
     at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.updateDefaultResults(GrantPermissionsActivity.java:362)
     at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.onCreate(GrantPermissionsActivity.java:105)
     at android.app.Activity.performCreate(Activity.java:6285)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2370)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2477) 
     at android.app.ActivityThread.access$900(ActivityThread.java:150) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5418) 
     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>I have also placed this into the manifest file:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.example.angelos.permissiontest"&gt;
      &lt;application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:supportsRtl="true"
              android:theme="@style/AppTheme"&gt;
  
          &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/&gt;
  
          &lt;activity android:name=".MainActivity"&gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN"/&gt;
                  &lt;category android:name="android.intent.category.LAUNCHER"/&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
  
      &lt;/application&gt;
  
  &lt;/manifest&gt;
  </code></pre>
  
  <p>I am not really sure why this is happening. This should be a super simple project. Can somebody help me?</p>