ContentProvider.OpenFile Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
OpenFile(Uri, String) |
Переопределите это, чтобы обрабатывать запросы на открытие большого двоичного объекта файла. |
OpenFile(Uri, String, CancellationSignal) |
Переопределите это, чтобы обрабатывать запросы на открытие большого двоичного объекта файла. |
OpenFile(Uri, String)
Переопределите это, чтобы обрабатывать запросы на открытие большого двоичного объекта файла.
[Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Handler")]
public virtual Android.OS.ParcelFileDescriptor? OpenFile (Android.Net.Uri uri, string mode);
[<Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Handler")>]
abstract member OpenFile : Android.Net.Uri * string -> Android.OS.ParcelFileDescriptor
override this.OpenFile : Android.Net.Uri * string -> Android.OS.ParcelFileDescriptor
Параметры
- uri
- Uri
Универсальный код ресурса (URI), файл которого должен быть открыт.
- mode
- String
Строковое представление режима файла. Может быть "r", "w", "wt", "wa", "rw" или "rwt". Обратите внимание, что точное применение этих вариантов может отличаться для каждой реализации поставщика, например "w" может или не может усечь.
Возвращаемое значение
Возвращает новый объект ParcelFileDescriptor, который можно использовать для доступа к файлу.
- Атрибуты
Исключения
Создает исключение FileNotFoundException, если нет файла, связанного с заданным URI, или недопустимый режим.
Создает исключение SecurityException, если вызывающий объект не имеет разрешения на доступ к файлу.
Комментарии
Переопределите это, чтобы обрабатывать запросы на открытие большого двоичного объекта файла. Реализация по умолчанию всегда вызывает.FileNotFoundException
Этот метод можно вызвать из нескольких потоков, как описано в разделе "Процессы и потоки".
Этот метод возвращает объект ParcelFileDescriptor, который возвращается непосредственно вызывающей объекту. Таким образом, большие данные (например, изображения и документы) можно возвращать без копирования содержимого.
Возвращенный объект ParcelFileDescriptor принадлежит вызывающему объекту, поэтому он несет ответственность за закрытие этого файла. То есть реализация этого метода должна создать новый объект ParcelFileDescriptor для каждого вызова.
Если он открыт с помощью эксклюзивных режимов "r" или "w", возвращаемый объект ParcelFileDescriptor может быть парой каналов или сокетов для включения потоковой передачи данных. Открытие с помощью режимов rw или rwt подразумевает файл на диске, который поддерживает поиск.
Если необходимо определить, когда возвращенный объект ParcelFileDescriptor был закрыт, или если удаленный процесс завершился сбоем или столкнулся с какой-либо другой ошибкой, можно использовать ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)
ParcelFileDescriptor#createReliablePipe()
или ParcelFileDescriptor#createReliableSocketPair()
.
Если вам нужно вернуть большой файл, который не поддерживается реальным файлом на диске, например файл в сетевой общей папке или облачной службе хранилища, рассмотрите возможность StorageManager#openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler)
потоковой передачи содержимого по запросу.
<p class="note">For use in Intents, you want to implement #getType
to return the appropriate MIME type for the data returned here with the URI. Это позволит разрешение намерений автоматически определить тип MIME данных и выбрать соответствующие целевые объекты в рамках своей операции.
<p class="note">Для улучшения взаимодействия с другими приложениями рекомендуется использовать любые URI, которые можно открыть, также поддерживает запросы на них, содержащие по крайней мере столбцы, указанные в параметре android.provider.OpenableColumns
. Вы также можете поддерживать другие распространенные столбцы, если у вас есть дополнительные метаданные для предоставления, например android.provider.MediaStore.MediaColumns#DATE_ADDED
в android.provider.MediaStore.MediaColumns
.</p>
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
См. также раздел
- <xref:Android.Content.ContentProvider.OpenAssetFile(Android.Net.Uri%2c+System.String)>
- <xref:Android.Content.ContentProvider.OpenFileHelper(Android.Net.Uri%2c+System.String)>
- GetType(Uri)
- ParseMode(String)
Применяется к
OpenFile(Uri, String, CancellationSignal)
Переопределите это, чтобы обрабатывать запросы на открытие большого двоичного объекта файла.
[Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")]
public virtual Android.OS.ParcelFileDescriptor? OpenFile (Android.Net.Uri uri, string mode, Android.OS.CancellationSignal? signal);
[<Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")>]
abstract member OpenFile : Android.Net.Uri * string * Android.OS.CancellationSignal -> Android.OS.ParcelFileDescriptor
override this.OpenFile : Android.Net.Uri * string * Android.OS.CancellationSignal -> Android.OS.ParcelFileDescriptor
Параметры
- uri
- Uri
Универсальный код ресурса (URI), файл которого должен быть открыт.
- mode
- String
Строковое представление режима файла. Может быть "r", "w", "wt", "wa", "rw" или "rwt". Обратите внимание, что точное применение этих вариантов может отличаться для каждой реализации поставщика, например "w" может или не может усечь.
- signal
- CancellationSignal
Сигнал для отмены операции или null
, если нет. Например, при скачивании файла из сети для обслуживания запроса режима RW следует периодически вызывать CancellationSignal#throwIfCanceled()
, чтобы проверить, отменил ли клиент запрос и прервать скачивание.
Возвращаемое значение
Возвращает новый объект ParcelFileDescriptor, который можно использовать для доступа к файлу.
- Атрибуты
Исключения
Создает исключение FileNotFoundException, если нет файла, связанного с заданным URI, или недопустимый режим.
Создает исключение SecurityException, если вызывающий объект не имеет разрешения на доступ к файлу.
Комментарии
Переопределите это, чтобы обрабатывать запросы на открытие большого двоичного объекта файла. Реализация по умолчанию всегда вызывает.FileNotFoundException
Этот метод можно вызвать из нескольких потоков, как описано в разделе "Процессы и потоки".
Этот метод возвращает объект ParcelFileDescriptor, который возвращается непосредственно вызывающей объекту. Таким образом, большие данные (например, изображения и документы) можно возвращать без копирования содержимого.
Возвращенный объект ParcelFileDescriptor принадлежит вызывающему объекту, поэтому он несет ответственность за закрытие этого файла. То есть реализация этого метода должна создать новый объект ParcelFileDescriptor для каждого вызова.
Если он открыт с помощью эксклюзивных режимов "r" или "w", возвращаемый объект ParcelFileDescriptor может быть парой каналов или сокетов для включения потоковой передачи данных. Открытие с помощью режимов rw или rwt подразумевает файл на диске, который поддерживает поиск.
Если необходимо определить, когда возвращенный объект ParcelFileDescriptor был закрыт, или если удаленный процесс завершился сбоем или столкнулся с какой-либо другой ошибкой, можно использовать ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)
ParcelFileDescriptor#createReliablePipe()
или ParcelFileDescriptor#createReliableSocketPair()
.
<p class="note">For use in Intents, you want to implement #getType
to return the appropriate MIME type for the data returned here with the URI. Это позволит разрешение намерений автоматически определить тип MIME данных и выбрать соответствующие целевые объекты в рамках своей операции.
<p class="note">Для улучшения взаимодействия с другими приложениями рекомендуется использовать любые URI, которые можно открыть, также поддерживает запросы на них, содержащие по крайней мере столбцы, указанные в параметре android.provider.OpenableColumns
. Вы также можете поддерживать другие распространенные столбцы, если у вас есть дополнительные метаданные для предоставления, например android.provider.MediaStore.MediaColumns#DATE_ADDED
в android.provider.MediaStore.MediaColumns
.</p>
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
См. также раздел
- <xref:Android.Content.ContentProvider.OpenAssetFile(Android.Net.Uri%2c+System.String)>
- <xref:Android.Content.ContentProvider.OpenFileHelper(Android.Net.Uri%2c+System.String)>
- GetType(Uri)
- ParseMode(String)