mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-31 11:35:34 +00:00 
			
		
		
		
	Create DirectoryUtils.java
This commit is contained in:
		
							parent
							
								
									2ffee347f0
								
							
						
					
					
						commit
						c361bc8550
					
				| @ -0,0 +1,76 @@ | ||||
| package awais.instagrabber.utils; | ||||
| 
 | ||||
| import android.os.Build; | ||||
| import android.os.Environment; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.util.Collections; | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
| import java.util.regex.Pattern; | ||||
| 
 | ||||
| public class DirectoryUtils { | ||||
|     private static final Pattern DIR_SEPORATOR = Pattern.compile("/"); | ||||
| 
 | ||||
|     /** | ||||
|      * From: https://stackoverflow.com/a/18871043/1436766 | ||||
|      * | ||||
|      * Returns all available SD-Cards in the system (include emulated) | ||||
|      * <p> | ||||
|      * Warning: Hack! Based on Android source code of version 4.3 (API 18) | ||||
|      * Because there is no standard way to get it. | ||||
|      * TODO: Test on future Android versions 4.4+ | ||||
|      * | ||||
|      * @return paths to all available SD-Cards in the system (include emulated) | ||||
|      */ | ||||
|     public static Set<String> getStorageDirectories() { | ||||
|         // Final set of paths | ||||
|         final Set<String> rv = new HashSet<>(); | ||||
|         // Primary physical SD-CARD (not emulated) | ||||
|         final String rawExternalStorage = System.getenv("EXTERNAL_STORAGE"); | ||||
|         // All Secondary SD-CARDs (all exclude primary) separated by ":" | ||||
|         final String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE"); | ||||
|         // Primary emulated SD-CARD | ||||
|         final String rawEmulatedStorageTarget = System.getenv("EMULATED_STORAGE_TARGET"); | ||||
|         if (TextUtils.isEmpty(rawEmulatedStorageTarget)) { | ||||
|             // Device has physical external storage; use plain paths. | ||||
|             if (TextUtils.isEmpty(rawExternalStorage)) { | ||||
|                 // EXTERNAL_STORAGE undefined; falling back to default. | ||||
|                 rv.add("/storage/sdcard0"); | ||||
|             } else { | ||||
|                 rv.add(rawExternalStorage); | ||||
|             } | ||||
|         } else { | ||||
|             // Device has emulated storage; external storage paths should have | ||||
|             // userId burned into them. | ||||
|             final String rawUserId; | ||||
|             if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { | ||||
|                 rawUserId = ""; | ||||
|             } else { | ||||
|                 final String path = Environment.getExternalStorageDirectory().getAbsolutePath(); | ||||
|                 final String[] folders = DIR_SEPORATOR.split(path); | ||||
|                 final String lastFolder = folders[folders.length - 1]; | ||||
|                 boolean isDigit = false; | ||||
|                 try { | ||||
|                     Integer.valueOf(lastFolder); | ||||
|                     isDigit = true; | ||||
|                 } catch (NumberFormatException ignored) { | ||||
|                 } | ||||
|                 rawUserId = isDigit ? lastFolder : ""; | ||||
|             } | ||||
|             // /storage/emulated/0[1,2,...] | ||||
|             if (TextUtils.isEmpty(rawUserId)) { | ||||
|                 rv.add(rawEmulatedStorageTarget); | ||||
|             } else { | ||||
|                 rv.add(rawEmulatedStorageTarget + File.separator + rawUserId); | ||||
|             } | ||||
|         } | ||||
|         // Add all secondary storages | ||||
|         if (!TextUtils.isEmpty(rawSecondaryStoragesStr)) { | ||||
|             // All Secondary SD-CARDs splited into array | ||||
|             final String[] rawSecondaryStorages = rawSecondaryStoragesStr.split(File.pathSeparator); | ||||
|             Collections.addAll(rv, rawSecondaryStorages); | ||||
|         } | ||||
|         return rv; | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user