获取本地路径的存储类型

时间:2016-02-08 09:05:34

标签: android storage android-sdcard android-external-storage

如果我有以下路径:

  1. pvclust()
  2. /storage/emulated/0/...
  3. /storage/UsbDriveA/...
  4. 我基本上有以下问题:

    • 如何找出它们所在的存储空间? (USB棒,外部存储,内部存储)
    • 如何找出它们的类型? (主存储(我有直接的r / w访问),二级存储(在android> = 4.4,我没有直接访问权限,如果需要,我需要通过/sdcard/...获取此权限它))
    • 如何找出ROOT路径是什么?

    我想要的结果

    1. 这是:内部存储,主存储,根路径为Storage Access Framework
    2. 这是:USB Stick,二级存储,根路径为/storage/emulated/0/
    3. 这是:外部存储,辅助存储,根路径为/storage/UsbDriveA/
    4. 我知道路径可能因手机而异,因此如何找出哪个路径位于哪个存储上以及哪些权限位于哪个路径上?我知道我可以通过路径的名称来猜测,但我对一种适用于所有(或至少在大多数)手机上的可靠方式感兴趣...

1 个答案:

答案 0 :(得分:0)

您需要通过Environment类检查每个主存储和辅助存储的访问权限。你应该这样做:

Boolean canWrite =  Environment.getExternalStorageDirectory().canWrite(); if(canWrite)// do something with externalstorage

并使用Environment.getRootDirectory()作为内部根

对于USB,您需要使用

进行检查
public static boolean isConnected(Context context) {
    intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
    return intent.getExtras().getBoolean("connected");
}