# Permission issue in reading file from external storage

**URL:** https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184
**Category:** Processing for Android
**Created:** [December 18, 2021, 1:13pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184 "2021-12-18T13:13:46Z")
**Posts on this page:** 1
**Showing post:** 8

<div class="post-metadata">

### Author: ![jafal](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/jafal/32/19112_2.png) [@jafal](https://discourse.processing.org/u/jafal)
#### Post date: [December 19, 2021, 1:12pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/8 "2021-12-19T13:12:18Z")

</div>

Hi

This is @noel code he is one of the best

From the same link this load from folder but folder and file must be existing creat the folder and put inside it PNG file or jpg

```auto
// Tested on Lollipop and Android 10
// Do not forget to give READ/WRITE permission

import android.os.Environment;
import android.Manifest; 
import android.content.pm.PackageManager; 
import android.os.Build; 
import android.os.Build.VERSION_CODES; 
import processing.core.PConstants;
import android.app.Activity; 

String image_folder = "test"; // Must be an existing folder
PImage img;
boolean image_loaded;
Activity activity; 

void setup() {
  size(displayWidth, displayHeight);
  background(0, 0, 200); 
  textAlign(CENTER);
  String str = "Click to load image.";
  textSize(12);
  float twf = width/textWidth(str);
  textSize(8*twf);
  text(str, width/2, height/2);
  activity = this.getActivity();
  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) { 
    requestParticularPermission();
  }
  imageMode(CENTER);
}

void draw() {
  if (image_loaded) {
    if (img != null) {
      background(0, 0, 200); 
      image(img, width/2, height/2);
    } else {
      text("Image could not be found", width/2, height/2);
    }
  }
}

void mousePressed() {
  loadMyImage("e.png");
}

void loadMyImage(String s) {
  try {
    String directory = new String(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+image_folder+"/");
    img = loadImage(directory+s);
    image_loaded = true;
  } 
  catch (Exception e) {
    background(0, 0, 200);
    text("Image could not be found.", width/2, height/2);
  }
}

private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; 
private void requestParticularPermission() { 
  activity.requestPermissions(PERMISSIONS_STORAGE, 2020);
}

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
  switch (requestCode) { 
  case 2020: 
    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      println("permissions granted");
    } else { 
      println("permissions not granted");
    } 
    break; 
  default: 
    activity.onRequestPermissionsResult(requestCode, permissions, grantResults);
  }
}

```

I have used both save and load in one code in my project

> [@Android 3d scanner](https://discourse.processing.org/t/android-3d-scanner/31671):
>
> This is my Android version of laser pointer 3d scanner What I have done in this project 1 connect Arduino via OTG 2 save image in android open_file_folderopen_file_folderopen_file_folder folder 3 load images from android folder 4 replacing video library by ketai library 5 creat text file for saving XYZ Thanks for @Chrisir and Thanks for @paulgoux for help

---

_[View the full topic](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184)._
