Android determines whether the mobile phone has an SD card or USB. Static judgment, androidsd
The determination of SD card is divided into static and dynamic, Dynamic Registration of broadcast, many people are writing online, so I will not elaborate too much here. For this static judgment, I am looking for Environment. getExternalStorageState (). equals (Environment. MEDIA_MOUNTED) on the Internet. After code verification, I find that the judgment fails.
The following method is a feasible judgment and I hope it will help you.
<pre name="code" class="java"> public static boolean USBExist(Context context) { boolean ret = false; StorageManager storageManager = (StorageManager) context .getSystemService(Context.STORAGE_SERVICE); if (storageManager == null) { Log.e(TAG, "Invalid reference to StorageManager received."); return ret; } try { if (storageManager.getVolumeState(getUSBPath(context)).equals( android.os.Environment.MEDIA_MOUNTED)) { ret = true; } } catch (Exception e) { Log.e(TAG, e.toString()); } return ret; } public static String getSDPath(Context context) { String sd = null; StorageManager storageManager = (StorageManager) context .getSystemService(Context.STORAGE_SERVICE); StorageVolume[] volumes = storageManager.getVolumeList(); for (int i = 0; i < volumes.length; i++) { if (volumes[i].isRemovable() && volumes[i].allowMassStorage() && volumes[i].getDescription(context).contains("SD")) { sd = volumes[i].getPath(); } } return sd; }
The following is the judgment on USB. OTG functions are generally useful
public static boolean USBExist(Context context) { boolean ret = false; StorageManager storageManager = (StorageManager) context .getSystemService(Context.STORAGE_SERVICE); if (storageManager == null) { Log.e(TAG, "Invalid reference to StorageManager received."); return ret; } try { if (storageManager.getVolumeState(getUSBPath(context)).equals( android.os.Environment.MEDIA_MOUNTED)) { ret = true; } } catch (Exception e) { Log.e(TAG, e.toString()); } return ret; } public static String getUSBPath(Context context) { String usb = null; StorageManager storageManager = (StorageManager) context .getSystemService(Context.STORAGE_SERVICE); StorageVolume[] volumes = storageManager.getVolumeList(); for (int i = 0; i < volumes.length; i++) { if (volumes[i].isRemovable() && volumes[i].allowMassStorage() && volumes[i].getDescription(context).contains("USB")) { usb = volumes[i].getPath(); } } return usb; }
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.