# 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:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [December 18, 2021, 1:13pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/1 "2021-12-18T13:13:46Z")

</div>

I can read files from data directory. I want to allow user to copy files to the directory and the app reads them. My problem, when I build the app on Android phone I’ve no idea where the data directory is.  
Alternatively, I’m trying to make my app to read from external /storage/emulated/0/ unfortunately I got AccessDeniedException (READ\_EXTERNAL\_STORAGE permission ticked). I’ve tried many suggested solutions for permission from internet without success.

Questions:

1. Can someone point me to some samples to read file from external storage?
2. Another solution, if I can find the data directory on the phone then I simply copy the files to there. Where is the directory?

Thanks in advance

---

<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 18, 2021, 2:13pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/2 "2021-12-18T14:13:48Z")

</div>

Hi

This not my code I don’t remember where I got it I think it’s belong for @noel

I have other code you have to determined the folder of saved data inside sketch I am going to post it when I found it

For now see this code

```auto
String[] SaveData = new String[1];
String[] LoadData = new String[1];
String[] FileData = {"My text is in here"};
String FileName = "File1.txt";

void setup() {
  fullScreen();
  
  SaveData[0] = "No data saved yet";
  LoadData[0] = "No data loaded yet";
  
}

void draw() {
  background(255);
  
  //Save data section and graphics
  fill(255, 0, 0);
  stroke(0);
  strokeWeight(2);
  rect(0, 0, width, height/2);
  fill(0);
  textSize(25);
  text("Click here to save", width/2 - textWidth("Click here to save")/2, height/4 - 25);
  text(SaveData[0], width/2 - textWidth(SaveData[0])/2, height/4 + 25);
  
  //Save if mouse is pressed below the half of the screen height
  if (mousePressed && mouseY < height/2) {
    //save to the name FileName or make a new txt called FileName inside of the data folder
    
    //comment this out to save the text in the string you set above
    FileData[0] = str(round(random(10)));
    SaveData = FileData;
    saveStrings(FileName, FileData);
    background(0);
    println("Saved");
    
  }
  
  //Load data section and graphics
  fill(0, 255, 0);
  stroke(0);
  strokeWeight(2);
  rect(0, height/2, width, height/2);
  fill(0);
  textSize(25);
  text("Click here to load", width/2 - textWidth("Click here to load")/2, height/2 + height/4 - 25);
  text(LoadData[0], width/2 - textWidth(LoadData[0])/2, height/2 + height/4 + 25);
  
  //Load if mouse is Pressed above half of the screen height
  if (mousePressed && mouseY > height/2) {
    //load the file from the directory of FileName which is inside of the data folder
    LoadData = loadStrings(FileName);
    background(0);
    println("Loaded");
    
  }
  
}

```

I run it with APDE

Edit

[imaginativeCODE](https://discourse.processing.org/u/imaginativeCODE)

[Mar '19](https://discourse.processing.org/t/android-mode-saving-and-loading-txt-file/5504/11)

---

<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 18, 2021, 2:14pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/3 "2021-12-18T14:14:22Z")

</div>

![Screenshot_2021-12-18-16-03-21-754](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/2/29fbfe8c8330409eac19ebd9894b397884e1e33b.jpeg)

---

<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 18, 2021, 2:39pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/4 "2021-12-18T14:39:56Z")

</div>

hi  
1

# [Load Image in and outside data folder](https://discourse.processing.org/t/load-image-in-and-outside-data-folder/23537)

2  
[Android Cannot get access to data folder](https://discourse.processing.org/t/android-cannot-get-access-to-data-folder/14636)

3

[Android Mode saving and loading txt file](https://discourse.processing.org/t/android-mode-saving-and-loading-txt-file/5504)

4

# [File contains a path separator](https://discourse.processing.org/t/file-contains-a-path-separator/6865)

in this links your going to find out all you need

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [December 19, 2021, 1:33am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/5 "2021-12-19T01:33:52Z")

</div>

Thank you for all the information. I’ll go through it and see.  
Currently, I’m still seeing _loadStrings_():

> java.lang.IllegalArgumentException: File /storage/emulated/0/twinkBOSS/env.txt contains a path separator

which I had before. I also tried ‘//’ without success.

I also tried:

> [@File contains a path separator](https://discourse.processing.org/t/file-contains-a-path-separator/6865/10):
>
> Well, I don’t know, how I did it, but the folowing code works: import processing.sound.\*; String filePath = "/sdcard/Sketchbook/VisualizerProject/data/song.mp3"; void setup(){ stealFile(filePath, "song.mp3"); SoundFile sf = new SoundFile(this, /\*dataPath("song.mp3")\*/filePath); sf.play(); } void draw(){ background(0); } boolean stealFile(String from, String filename){ println("Stealing file \"" + from + "\"..."); if(!(new File(from).exists())){ println(" Fail: Input path i…

I added:

> println( listFile[i]);

in the ‘else’ section and didn’t see any file listed at all. It basically goes through all directories recursively without listing any files. Probably, missing permission in accessing files. I’ve also found articles about permission changes in Android 10 and some older solutions won’t work any more. Can this be a reason?

---

<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, 12:09pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/6 "2021-12-19T12:09:06Z")

</div>

Hi

I have used load and save from this link

> **[GitHub -...](https://github.com/EmmanuelPil/Android-java-code-utilities-widgets-for-Processing-for-Android)**
>
> Android code for Processing for Android. Contribute to EmmanuelPil/Android-java-code-utilities-widgets-for-Processing-for-Android development by creating an account on GitHub.

You can try load from the link

This is the save code it’s working fine on Android APDE and android mode processing

This code generates 2 folders automatic even they not existing

```auto

import java.io.BufferedWriter;
import java.io.FileWriter;
import android.os.Environment;

PImage save;
PGraphics square;

String s = "myImage.png";
String outFilename = "out.txt";

void setup(){
  // Write some text to the file
  //for(int i=0; i<100; i++){
   appendTextToFile(outFilename, "Text" +"trrdfghjhgdssdfhText");
 
// size(600, 400);
  square = createGraphics(600, 480);
  square.beginDraw();
  square.fill(0, 0, 150);
  square.rect(0, 0, 600, 480);
  square.endDraw();
  image(square, 0, 0);
  save = get(0, 0, 600, 400);
  saveImage(s);
 
  
  
  //} 
}

void saveImage(String s) {
   try
      {
     String directory = new String(Environment.getExternalStorageDirectory().getAbsolutePath() + "/imgFolder");
     File imgFolder = new File(directory);
      if (!imgFolder.exists()) {
      boolean success = true;
       success = imgFolder.mkdirs();
    }
     save.save(directory + "/" + s);
         println("File saved successfully.");
 } 
     catch (Exception e) 
        {
       println("Error while saving file: " + e);
  }
}

void appendTextToFile(String filename, String text){
 
 for(int i=0; i<100; i++){
    //appendTextToFile(outFilename, "Text" + i);
   }
 
  File f = new File("/storage/emulated/0/Folder/jaf.txt");
  if(!f.exists()){
    createFile(f);
  }
  try {
   
   
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f, true)));
    out.println(text);
    out.close();
  }catch (IOException e){
      e.printStackTrace();
  }
}

void createFile(File f){
  File parentDir = f.getParentFile();
  try{
    parentDir.mkdirs(); 
    f.createNewFile();
  }catch(Exception e){
    e.printStackTrace();
  }
}    

```

---

<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, 12:17pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/7 "2021-12-19T12:17:32Z")

</div>

After compile to APP go to APP info to make sure that permission is allowed

 ![Screenshot_2021-12-19-14-09-07-431](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/6/65ea02e4fe9b638380daa5769ccc5ce782c44995.jpeg)

When you run the app you can see the created folders

 ![Screenshot_2021-12-19-09-26-27-257](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/3/3c4ccbe281894058b516d07167e229ae992d77b1.jpeg)

The blue marked folders generated after running the app each folder include file one txt file the other image file

---

<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

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [December 30, 2021, 12:40pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/9 "2021-12-30T12:40:41Z")

</div>

@jafal Just tested above code. That works. Thanks so much. I’ll work on that.

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [December 30, 2021, 1:15pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/10 "2021-12-30T13:15:26Z")

</div>

I tried to modify the above code to load a text file:

```auto
void loadEnv( String f) {
  String dir = new String(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+image_folder+"/");
  try {
    println( dir+f);
    String[] LoadData = loadStrings( dir+ f);
  } 
  catch (Exception e) {
    background(0, 0, 200);
    text("File not found", width/2, height/2);
  }
}

```

I got this is the console:

```auto
permissions granted
/storage/emulated/0/twinkBOSS/env.txt

```

But got “File not found” on the screen.  
When I tried to load an image all went well. Permission to read external media should be okay. However it doesn’t want to read text file.

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [December 31, 2021, 11:03am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/11 "2021-12-31T11:03:27Z")

</div>

I let the Exception printed out:  
java.lang.IllegalArgumentException: File /storage/emulated/0/twinkBOSS/env.txt contains a path separator

Looks like I’m back to following situation which I wasn’t able to resolve:

> [@File contains a path separator](https://discourse.processing.org/t/file-contains-a-path-separator/6865/11):
>
> @FurryNightShade=== yes, but this code does not answer to your question because you KNOW a) you hardcode the path b) the user cannot choose nothing; if you want to see all songs on your phone, try someting like that:: import android.os.Environment; void setup(){ size(800,1000); orientation(PORTRAIT); File f= Environment.getExternalStorageDirectory();//dossier de base parcoursDossier(f); } void draw(){ } public void parcoursDossier(File dossier) { File[] listFile;///Ar…

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [December 31, 2021, 11:29am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/12 "2021-12-31T11:29:52Z")

</div>

I tried to work around the path separator issue by using File and Scanner:

```auto
void loadEnv( String f) {
  String dir = new String(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+image_folder+"/");
  File file = new File( dir+f);
  
  try {
    println( dir+f);
    Scanner sc = new Scanner(file);
    println(sc.next());
  } 
  catch (Exception e) {
    println(e);
    text("File not found", width/2, height/2);
  }
}

```

Then it returns permission error:

```auto
java.io.FileNotFoundException: /storage/emulated/0/twinkBOSS/env.txt: open failed: EACCES (Permission denied)

```

---

<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 31, 2021, 4:47pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/13 "2021-12-31T16:47:58Z")

</div>

Hi

This example from APDE I just changed the path

```auto

String[] lines;
int index = 0;
String filepath = "/storage/emulated/0/test/positions.txt/";
void setup() {
  size(800, 800);
  background(0);
  stroke(255);
  frameRate(12);
  lines = loadStrings(filepath);

    
}

void draw() {
  if (index < lines.length) {
    String[] pieces = split(lines[index], '\t');
    if (pieces.length == 2) {
      int x = int(pieces[0]) * 2;
      int y = int(pieces[1]) * 2;
      point(x, y);
    }
    // Go to the next line for the next run through draw()
    index = index + 1;
  }
}

```

---

<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 31, 2021, 4:49pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/14 "2021-12-31T16:49:24Z")

</div>

![Screenshot_2021-12-31-18-47-31-148](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/b/b47d91f75fa15766d7246e55848742f6d72315eb.jpeg)

---

<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 31, 2021, 5:56pm UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/15 "2021-12-31T17:56:50Z")

</div>

This is text save

```auto
import java.io.BufferedWriter;
import java.io.FileWriter;
import android.os.Environment;

String outFilename = "out.txt";

void setup() {
size(600, 400);
  for (int i=0; i<10; i++) {
    appendTextToFile(outFilename, "fine " +i ); 
  }
}
void appendTextToFile(String filename, String text) {
  File f = new File("/storage/emulated/0/save/out.txt");
  if (!f.exists()) {
    createFile(f);
  }
  try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f, true)));
    out.println(text);
    out.close();
  }
  catch (IOException e) {
    e.printStackTrace();
  }
}
void createFile(File f) {
  File parentDir = f.getParentFile();
  try {
    parentDir.mkdirs(); 
    f.createNewFile();
  }
  catch(Exception e) {
    e.printStackTrace();
  }
}

```

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [January 1, 2022, 1:28am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/16 "2022-01-01T01:28:55Z")

</div>

I tried above codes with following permissions:

```auto
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

```

I got:

```auto
java.io.FileNotFoundException: /storage/emulated/0/twinkBOSS/out.txt: open failed: EPERM (Operation not permitted)

```

When I ran it with an existing file I got:

```auto
java.io.FileNotFoundException: /storage/emulated/0/twinkBOSS/env.txt: open failed: EACCES (Permission denied)

```

I was hoping if it can’t create file at least it can append to existing file.

Does this has something to do with my Processing IDE 3.5.4 and Android 11?  
I tried to run Processing4. Unfortunately, the IDE itself is facing some errors.

---

<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:** [January 1, 2022, 1:32am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/17 "2022-01-01T01:32:50Z")

</div>

> [@bigboss97](#):
>
> Does this has something to do with my Processing IDE 3.5.4 and Android 11?

codes working fine i am using Processing IDE 3.5.4

and test them with APDE also

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [January 1, 2022, 1:35am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/18 "2022-01-01T01:35:54Z")

</div>

I can see that you are compiling your code on tablet (APDE), right?  
I’m doing on Win10 with USB debugging.

---

<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:** [January 1, 2022, 1:37am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/19 "2022-01-01T01:37:41Z")

</div>

i run this on both

```auto
import java.io.BufferedWriter;
import java.io.FileWriter;
import android.os.Environment;

String outFilename = "out.txt";

void setup() {
size(600, 400);
  for (int i=0; i<10; i++) {
    appendTextToFile(outFilename, "fine " +i ); 
  }
}
void appendTextToFile(String filename, String text) {
  File f = new File("/storage/emulated/0/save/out.txt");
  if (!f.exists()) {
    createFile(f);
  }
  try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f, true)));
    out.println(text);
    out.close();
  }
  catch (IOException e) {
    e.printStackTrace();
  }
}
void createFile(File f) {
  File parentDir = f.getParentFile();
  try {
    parentDir.mkdirs(); 
    f.createNewFile();
  }
  catch(Exception e) {
    e.printStackTrace();
  }
}

```

---

<div class="post-metadata">

**Author:** ![bigboss97](https://avatars.discourse-cdn.com/v4/letter/b/47e85d/32.png) [@bigboss97](https://discourse.processing.org/u/bigboss97)\
**Post date:** [January 1, 2022, 1:42am UTC](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184/20 "2022-01-01T01:42:15Z")

</div>

Just tried it on my phone APDE, same error?  
What are your permission settings?

[Next page](https://discourse.processing.org/t/permission-issue-in-reading-file-from-external-storage/34184.md?page=2)
