В этом уроке:

Этот урок покажет вам, как создать своё приложение для отправки больших файлов на другое устройство с помощью Android Beam file transfer. Для отправки файлов, вы запрашиваете разрешение на использование NFC и внешних накопителей, проверяете, что устройство поддерживает NFC, а также предоставляет URI для Android Beam file transfer.

Функция Android Beam file transfer имеет следующие требования:

  1. Android Beam file transfer для больших файлов доступна только в Android 4.1 (API уровень 16) и выше.
  2. Файлы, которые вы хотите передать, должны находиться на внешнем накопителе. Чтобы узнать больше об использовании внешних накопителей, читайте Использование внешних накопителей.
  3. Каждый файл, который вы хотите передать должен быть доступен для чтения. Вы можете установить это разрешение с помощью метода File.setReadable(true,false).
  4. Вы должны предоставить URI для файлов, которые вы хотите передать. Android Beam file transfer не в состоянии справиться URI контента, генерируемыми FileProvider.getUriForFile

Объявление функциональных возможностей в манифесте


Во-первых, отредактируйте манифест вашего приложение, объявив разрешения и функциональные возможности, обходимые вашему приложению.

Запросите разрешения

Чтобы разрешить вашему приложению использовать Android Beam file transfer для отправки файлов с внешних накопителей с помощью NFC, необходимо запросить следующие разрешения в манифесте вашего приложения:

NFC
Позволяет вашему приложению передавать данные по NFC. Чтобы указать это разрешение, добавьте следующий элемент в качестве дочернего <manifest> элемента:

 

READ_EXTERNAL_STORAGE
Позволяет вашему приложению чтение из внешнего хранилища. Чтобы указать это разрешение, добавьте следующий элемент в качестве дочернего <manifest> элемента:

 

Примечание: По состоянию на Android 4.2.2 (уровень API 17), это разрешение не соблюдаются. Будущие версии платформы могут потребовать его у приложений, которые хотят читать из внешних накопителей. Для обеспечения прямой совместимости, запросите разрешения сейчас, прежде чем оно станет необходимым.

Укажите функцию NFC

Укажите, что ваше приложение использует NFC, добавив <uses-feature> элемент как дочерний<manifest> элемента. Установите android:required атрибут в true , чтобы показать, что ваше приложение не будет работать при отсутствии NFC.

В следующем фрагменте показано, как указать <uses-feature> элемент:

 

Обратите внимание, что если ваше приложение использует NFC только для дополнительной функциональности, и будет работать даже, если NFC отсутствует, вы должны установитьandroid:required к false, и проверить на наличие NFC в коде.

Укажите Android Beam file transfer

Так как Android Beam file transfer доступна только начиная с Android 4.1 (API уровень 16) и выше, если ключевая функциональность вашего приложения зависит от Android Beam file transfer, то необходимо указать <uses-sdk> элемент с android:minSdkVersion="16" атрибутом. В противном случае, вы можете установить android:minSdkVersion в другое значение по необходимости, и проверить версию платформы в коде, как описано в следующем разделе. 

 

Проверить поддержку Android Beam file transfer


Чтобы указать в манифесте вашего приложения, что NFC не является обязательным для работы, вы можете использовать следующий элемент:

 

Если вы устанавливаете атрибут android:required="false", вы должны в коде проверить поддерживается ли NFC и Android Beam file transfer.

Чтобы проверить поддержку Android Beam file transfer в коде, начните с проверки, что устройство поддерживает NFC, вызвав PackageManager.hasSystemFeature() с аргументомFEATURE_NFC. Затем проверьте, что версия Android поддерживает Android Beam file transfer, используя значение SDK_INT. Если Android Beam file transfer поддерживается, получите экземпляр контроллера NFC, который позволяет взаимодействовать с оборудованием NFC. Например:

 

Создание метода обратного вызова, предоставляющий файлы


После того, как вы убедились, что устройство поддерживает Android Beam file transfer, добавьте метод обратного вызова, который система вызовет, когда Android Beam file transfer обнаружит, что пользователь хочет отправить файлы на другое NFC устройство. В этом методе обратного вызова, верните массив Uri объектов. Android Beam file transfer скопирует файлы, представленные этими URI, на принимающее устройство.

Чтобы добавить метод обратного вызова, реализуйте NfcAdapter.CreateBeamUrisCallbackинтерфейс и его метод createBeamUris(). Следующий фрагмент показывает, как это сделать:

 

После того, как вы реализовали интерфейс, предоставьте метод обратного вызова для Android Beam file transfer, вызвав setBeamPushUrisCallback(). Следующий фрагмент показывает, как это сделать:

 

Примечание: Вы также можете предоставить массив Uri объектов непосредственно в библиотеку NFC через полученный экземпляр NfcAdapter . Выберите этот подход, если вы можете определить URI, которые необходимо передать, до возникновения сенсорного события NFC. Чтобы узнать больше об этом подходе, см. NfcAdapter.setBeamPushUris()

Укажите файлы для отправки


Для передачи одного или нескольких файлов на другое NFC устройство, получите URI файла (URI сfile схемой) для каждого файла, а затем добавьте URI в массив Uri объектов. Чтобы передать файл, вы также должны иметь постоянный доступ на чтение файла. Например, следующий фрагмент показывает, как получить URI файла по имени файла, а затем добавить URI в массив:

Если не указано иное, этот контент распространяется под лицензией Creative Commons Attribution 2.5. Для получения дополнительной информации и ограничений, см. Лицензия контента.

Отправка файлов на другое android устройство с использованием NFS обновлено: Ноябрь 24, 2015 автором: admin