android 发送文件给另一设备,使用 NFC 将文件发送到其他设备 |
您所在的位置:网站首页 › 怎么用nfc传输文件到手机 › android 发送文件给另一设备,使用 NFC 将文件发送到其他设备 |
本课介绍了如何设计应用,以使用 Android Beam 文件传输功能将大型文件发送到其他设备。如需发送文件,您需要请求使用 NFC 和外部存储空间的权限,进行测试以确保您的设备支持 NFC,然后向 Android Beam 文件传输功能提供相应 URI。 使用 Android Beam 文件传输功能的要求如下: 仅 Android 4.1(API 级别 16)及更高版本支持使用 Android Beam 文件传输功能传输大型文件。 您要传输的文件必须位于外部存储空间中。如需详细了解如何使用外部存储空间,请阅读使用外部存储空间。 您要传输的每个文件都必须为全局可读文件。您可以通过调用 您必须提供待传输文件的 URI。Android Beam 文件传输功能无法处理由 在清单中声明功能 首先,修改您的应用清单,以声明您的应用所需的权限和功能。 请求权限 如需允许您的应用使用 Android Beam 文件传输功能通过 NFC 从外部存储空间发送文件,您必须在应用清单中请求以下权限: 允许您的应用通过 NFC 发送数据。如需指定此权限,请将以下元素添加为 允许您的应用从外部存储空间读取数据。如需指定此权限,请将以下元素添加为 android:name="android.permission.READ_EXTERNAL_STORAGE" /> 注意:从 Android 4.2.2(API 级别 17)开始,系统不会强制执行此权限。对于要从外部存储空间读取数据的应用,该平台的未来版本可能需要此权限。为了确保向前兼容性,请立即请求此权限(在需要使用它之前)。 指定 NFC 功能 通过将 android:required 属性设置为 true,以指明您的应用只有在存在 NFC 时才会正常工作。 以下代码段展示了如何指定 android:name="android.hardware.nfc" android:required="true" /> 请注意,如果您的应用仅将 NFC 作为一个选项,但在不存在 NFC 时仍然正常工作,则应将 android:required 设置为 false,并在代码中测试 NFC。 指定 Android Beam 文件传输功能 由于仅 Android 4.1(API 级别 16)及更高版本支持 Android Beam 文件传输功能,如果您的应用将 Android Beam 文件传输作为其关键功能,则您必须指定具有 测试是否支持 Android Beam 文件传输功能 如需在应用清单中指定 NFC 是可选项,您可以使用以下元素: 如果您设置属性 如需在代码中测试是否支持 Android Beam 文件传输功能,请先通过调用具有 Kotlin class MainActivity : Activity() { ... private lateinit var nfcAdapter: NfcAdapter // Flag to indicate that Android Beam is available private var androidBeamAvailable = false ... override fun onCreate(savedInstanceState: Bundle?) { ... androidBeamAvailable = if (!packageManager.hasSystemFeature(PackageManager.FEATURE_NFC)) { // NFC isn't available on the device /* * Disable NFC features here. * For example, disable menu items or buttons that activate * NFC-related features */ false // Android Beam file transfer isn't supported } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { // If Android Beam isn't available, don't continue. androidBeamAvailable = false /* * Disable Android Beam file transfer features here. */ ... false } else { // Android Beam file transfer is available, continue nfcAdapter = NfcAdapter.getDefaultAdapter(this) ... true } } ... }Java public class MainActivity extends Activity { ... NfcAdapter nfcAdapter; // Flag to indicate that Android Beam is available boolean androidBeamAvailable = false; ... @Override protected void onCreate(Bundle savedInstanceState) { ... // NFC isn't available on the device if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) { /* * Disable NFC features here. * For example, disable menu items or buttons that activate * NFC-related features */ ... // Android Beam file transfer isn't supported } else if (Build.VERSION.SDK_INT fileUris += fileUri } ?: Log.e("My Activity", "No File URI available for file.")Java /* * Create a list of URIs, get a File, * and set its permissions */ private Uri[] fileUris = new Uri[10]; String transferFile = "transferimage.jpg"; File extDir = getExternalFilesDir(null); File requestFile = new File(extDir, transferFile); requestFile.setReadable(true, false); // Get a URI for the File and add it to the list of URIs fileUri = Uri.fromFile(requestFile); if (fileUri != null) { fileUris[0] = fileUri; } else { Log.e("My Activity", "No File URI available for file."); } 如需了解其他相关信息,请参阅存储选项 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |