@@ -225,13 +225,13 @@ private ArrayList<SafStorage3> buildSafFileList() {
225225 if (!item_svi .isDuplicate ) {
226226 if (isScopedStorageMode ()) {
227227 rt =SafFile3 .fromTreeUri (mContext , Uri .parse (SAF_FILE_DOCUMENT_TREE_URI_PREFIX +item_svi .uuid +"%3A" ));
228- if (rt .exists ()) {//Internal storage, SDCARD or USB
228+ if (rt != null && rt .exists ()) {//Internal storage, SDCARD or USB
229229 SafStorage3 sli =new SafStorage3 ();
230230 sli .description =item_svi .description ;
231231 sli .uuid =item_svi .uuid ;
232232 sli .saf_file =rt ;
233233 sli .isSafFile =true ;
234- sli .appDirectory =getAppSpecificDirectory (mContext , item_svi .uuid );
234+ sli .appDirectory =getAppSpecificDirectory (mContext , item_svi .uuid );
235235 saf_list .add (sli );
236236 }
237237 } else {
@@ -243,9 +243,12 @@ private ArrayList<SafStorage3> buildSafFileList() {
243243 sli .isSafFile =false ;
244244 sli .appDirectory =getAppSpecificDirectory (mContext , item_svi .uuid );
245245 sli .appMountpoint =baseMp ;
246- String fp =mContext .getExternalFilesDirs (null )[0 ].getPath ();
247- sli .saf_file =new SafFile3 (mContext , fp .substring (0 , fp .indexOf ("/Android/data" )));
248- saf_list .add (sli );
246+ File [] fl =mContext .getExternalFilesDirs (null );
247+ if (fl != null && fl [0 ] != null ) {
248+ String fp =fl [0 ].getPath ();
249+ sli .saf_file =new SafFile3 (mContext , fp .substring (0 , fp .indexOf ("/Android/data" )));
250+ saf_list .add (sli );
251+ }
249252 } else {//SDCARD or USB
250253 File lf =new File (SafFile3 .SAF_FILE_EXTERNAL_STORAGE_PREFIX + item_svi .uuid );
251254 if (lf .exists ()) {
@@ -272,13 +275,16 @@ private ArrayList<SafStorage3> buildSafFileList() {
272275 sli .description =item_svi .description ;
273276 sli .uuid =SAF_FILE_PRIMARY_UUID ;
274277 sli .isSafFile =false ;
275- sli .appDirectory =mContext .getExternalFilesDirs (null )[0 ].getPath ();
276- sli .appMountpoint =baseMp ;
277- sli .saf_file =new SafFile3 (mContext , SAF_FILE_PRIMARY_STORAGE_PREFIX );
278- saf_list .add (sli );
278+ File [] fl =mContext .getExternalFilesDirs (null );
279+ if (fl != null && fl [0 ] != null ) {
280+ sli .appDirectory =fl [0 ].getPath ();
281+ sli .appMountpoint =baseMp ;
282+ sli .saf_file =new SafFile3 (mContext , SAF_FILE_PRIMARY_STORAGE_PREFIX );
283+ saf_list .add (sli );
284+ }
279285 } else {
280286 rt =SafFile3 .fromTreeUri (mContext , Uri .parse (SAF_FILE_DOCUMENT_TREE_URI_PREFIX +item_svi .uuid +"%3A" ));
281- if (rt .exists ()) {
287+ if (rt != null && rt .exists ()) {
282288 SafStorage3 sli =new SafStorage3 ();
283289 sli .description =item_svi .description ;
284290 sli .uuid =item_svi .uuid ;
@@ -316,7 +322,12 @@ public int compare(SafStorage3 l1, SafStorage3 r1) {
316322
317323 static private String getAppSpecificDirectory (Context c , String uuid ) {
318324 String app_dir = null ;
319- File [] fl =c .getExternalFilesDirs (null ); // null for no subdirectory
325+ if (uuid == null ) {
326+ log .debug ("getAppSpecificDirectory Error: null uuid specified" );
327+ return app_dir ;
328+ }
329+
330+ File [] fl = c .getExternalFilesDirs (null ); // null for no subdirectory
320331 if (fl != null ) {
321332 if (uuid .equals (SAF_FILE_PRIMARY_UUID ) && fl [0 ] != null ) {
322333 app_dir =fl [0 ].getPath (); // -> /storage/emulated/0/Android/data/com.sentaroh.android.SMBSync3/files/
0 commit comments