def _handle_external_documents(uri): ''' Selection from the system filechooser when using ``Phone`` or ``Internal storage`` or ``SD card`` option from menu. .. versionadded:: 1.4.0 ''' file_id = DocumentsContract.getDocumentId(uri) file_type, file_name = file_id.split(':') # internal SD card mostly mounted as a files storage in phone internal = storagepath.get_external_storage_dir() # external (removable) SD card i.e. microSD external = storagepath.get_sdcard_dir() try: external_base = basename(external) except TypeError: external_base = basename(internal) # resolve sdcard path sdcard = internal # because external might have /storage/.../1 or other suffix # and file_type might be only a part of the real folder in /storage if file_type in external_base or external_base in file_type: sdcard = external return join(sdcard, file_name)
def _handle_external_documents(uri): ''' Selection from the system filechooser when using ``Phone`` or ``Internal storage`` or ``SD card`` option from menu. .. versionadded:: 1.4.0 ''' file_id = DocumentsContract.getDocumentId(uri) file_type, file_name = file_id.split(':') # internal SD card mostly mounted as a files storage in phone internal = storagepath.get_external_storage_dir() # external (removable) SD card i.e. microSD external = storagepath.get_sdcard_dir() external_base = basename(external) # resolve sdcard path sdcard = internal # because external might have /storage/.../1 or other suffix # and file_type might be only a part of the real folder in /storage if file_type in external_base or external_base in file_type: sdcard = external path = join(sdcard, file_name) return path