1111import com .termux .api .TermuxApiReceiver ;
1212import com .termux .api .util .ResultReturner ;
1313import com .termux .shared .data .IntentUtils ;
14+ import com .termux .shared .errors .Error ;
15+ import com .termux .shared .file .FileUtils ;
1416import com .termux .shared .logger .Logger ;
1517import com .termux .shared .termux .TermuxConstants ;
18+ import com .termux .shared .termux .file .TermuxFileUtils ;
1619
17- import java .io .File ;
1820import java .io .FileOutputStream ;
1921import java .io .IOException ;
2022import java .io .InputStream ;
@@ -31,13 +33,24 @@ public static void onReceive(TermuxApiReceiver apiReceiver, final Context contex
3133
3234 ResultReturner .returnData (apiReceiver , intent , out -> {
3335 final String fileExtra = intent .getStringExtra ("file" );
34- if (fileExtra == null || !new File (fileExtra ).getParentFile ().canWrite ()) {
35- out .println ("ERROR: Not a writable folder: " + fileExtra );
36+ if (fileExtra == null || fileExtra .isEmpty ()) {
37+ out .println ("ERROR: " + "File path not passed" );
38+
39+ return ;
40+ }
41+
42+ // Get canonical path of fileExtra
43+ String filePath = TermuxFileUtils .getCanonicalPath (fileExtra , null , true );
44+ String fileParentDirPath = FileUtils .getFileBasename (filePath );
45+
46+ Error error = FileUtils .checkMissingFilePermissions ("file parent directory" , fileParentDirPath , "rw-" , true );
47+ if (error != null ) {
48+ out .println ("ERROR: " + error .getErrorLogString ());
3649 return ;
3750 }
3851
3952 Intent intent1 = new Intent (context , StorageActivity .class );
40- intent1 .putExtra (FILE_EXTRA , fileExtra );
53+ intent1 .putExtra (FILE_EXTRA , filePath );
4154 intent1 .addFlags (Intent .FLAG_ACTIVITY_NEW_TASK );
4255 context .startActivity (intent1 );
4356 });
0 commit comments