title: Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
body: <p>I have BitmapScalingHelper.java: </p>
  
  <pre><code>public class BitmapScalingHelper
  {
      public static Bitmap decodeResource(Resources res, int resId, int dstWidth, int dstHeight)
      {
          Options options = new Options();
          options.inJustDecodeBounds = true;
          BitmapFactory.decodeResource(res, resId, options);
          options.inJustDecodeBounds = false;
  
          options.inSampleSize = calculateSampleSize(options.outWidth, options.outHeight, dstWidth,
                  dstHeight);
  
          Bitmap unscaledBitmap = BitmapFactory.decodeResource(res, resId, options);
  
          return unscaledBitmap;
      }
  
      public static Bitmap decodeFile(String filePath, int dstWidth, int dstHeight)
      {
          Options options = new Options();
          options.inJustDecodeBounds = true;
          BitmapFactory.decodeFile(filePath, options);
  
          options.inJustDecodeBounds = false;
          options.inSampleSize = calculateSampleSize(options.outWidth, options.outHeight, dstWidth,
                  dstHeight);
  
          Bitmap unscaledBitmap = BitmapFactory.decodeFile(filePath, options);
  
          return unscaledBitmap;
      }
  
  
      public static int calculateSampleSize(int srcWidth, int srcHeight, int dstWidth, int dstHeight)
      {
          final float srcAspect = (float)srcWidth / (float)srcHeight;
          final float dstAspect = (float)dstWidth / (float)dstHeight;
  
          if (srcAspect &gt; dstAspect)
          {
              return srcWidth / dstWidth;
          }
          else
          {
              return srcHeight / dstHeight;
          }
      }
  
      public static Bitmap createScaledBitmap(Bitmap unscaledBitmap, int dstWidth, int dstHeight)
      {
          Rect srcRect = calculateSrcRect(unscaledBitmap.getWidth(), unscaledBitmap.getHeight());
  
          Rect dstRect = calculateDstRect(unscaledBitmap.getWidth(), unscaledBitmap.getHeight(),
                  dstWidth, dstHeight);
  
          Bitmap scaledBitmap = Bitmap.createBitmap(dstRect.width(), dstRect.height(),
                  Config.ARGB_8888);
  
          Canvas canvas = new Canvas(scaledBitmap);
          canvas.drawBitmap(unscaledBitmap, srcRect, dstRect, new Paint(Paint.FILTER_BITMAP_FLAG));
  
          return scaledBitmap;
      }
  
      public static Rect calculateSrcRect(int srcWidth, int srcHeight)
      {
          System.out.print("Scr" + srcWidth + " " + srcHeight);
          return new Rect(0, 0, srcWidth, srcHeight);
      }
  
      public static Rect calculateDstRect(int srcWidth, int srcHeight, int dstWidth, int dstHeight)
      {
          final float srcAspect = (float)srcWidth / (float)srcHeight;
          final float dstAspect = (float)dstWidth / (float)dstHeight;
  
          if (srcAspect &gt; dstAspect)
          {
              return new Rect(0, 0, dstWidth, (int)(dstWidth / srcAspect));
          }
          else
          {
              return new Rect(0, 0, (int)(dstHeight * srcAspect), dstHeight);
          }
      }
  }
  </code></pre>
  
  <p>In this class there is:</p>
  
  <pre><code>createScaledBitmap()
  </code></pre>
  
  <p>...which returns a scaled bitmap image.</p>
  
  <p>In another class, I have this method:</p>
  
  <pre><code>public Bitmap readSelectedBitmapFromFile(Context context, String fileName)
      {
          DisplayMetrics metrics = new DisplayMetrics();
          WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
          windowManager.getDefaultDisplay().getMetrics(metrics);
  
          Bitmap scaledBitmap = getDefaultBitmap(context);
  
          try {
              File themeParentDir = context.getDir(THEME_DIRECTORY_NAME, Context.MODE_PRIVATE); //Creating an internal dir;
              File themeSubDir = new File(themeParentDir, THEME_SUB_DIRECTORY_NAME + getThemeBasedDirectoryNumber(m_SelectedTheme));
              themeSubDir.mkdir();
  
              File themeFileWithinDir = new File(themeSubDir, fileName); //Getting a file within the dir.
  
              if(themeFileWithinDir.exists())
              {
                  // Part 1: Decode image
                  Bitmap unscaledBitmap = BitmapScalingHelper.decodeFile(themeFileWithinDir.getPath(), metrics.widthPixels, metrics.heightPixels);
  
                  // Part 2: Scale image
                  scaledBitmap = BitmapScalingHelper.createScaledBitmap(unscaledBitmap, metrics.widthPixels, metrics.heightPixels);
                  unscaledBitmap.recycle();
              }
  
              m_SelectedBitmap = scaledBitmap;
  
          }
          catch (Error e) {
              e.printStackTrace();
          }
  
          return scaledBitmap;
      }
  </code></pre>
  
  <p>This code was working fine in many devices. But it was crashing in some devices. Can any one please help me out ?</p>
  
  <p>I am getting a log like this: </p>
  
  <pre><code>Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3254)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350)
         at android.app.ActivityThread.access$1100(ActivityThread.java:222)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:158)
         at android.app.ActivityThread.main(ActivityThread.java:7229)
         at java.lang.reflect.Method.invoke(Method.java)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
  Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
         at in.plackal.lovecyclesfree.util.BitmapScalingHelper.createScaledBitmap(SourceFile:62)
         at in.plackal.lovecyclesfree.general.ThemeManager.readSelectedBitmapFromFile(SourceFile:202)
         at in.plackal.lovecyclesfree.activity.SplashActivity.onCreate(SourceFile:70)
         at android.app.Activity.performCreate(Activity.java:6876)
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350)
         at android.app.ActivityThread.access$1100(ActivityThread.java:222)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:158)
         at android.app.ActivityThread.main(ActivityThread.java:7229)
         at java.lang.reflect.Method.invoke(Method.java)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
  </code></pre>
  
  <p>If it's a permissions issue, it should not crash below the Android-M version, but it is crashing in some pre-Android-M devices also.</p>