15、NFC技术:使用Android Beam技术传输文件

2023-05-16

传输文件的API

从Android4.1开始,NfcAdapter类增加了如下两个推送数据的方法。

NfcAdapter.setBeamPushUris
NfcAdapter.setBeamPushUrisCallback

这两个方法的原型如下:

public void setBeamPushUris(Uri[] uris, Activity activity);

public void setBeamPushUrisCallback(CreateBeamUrisCallback callback, Activity activity);

Demo
 

 1 import java.io.FileOutputStream;
 2 import java.io.InputStream;
 3 
 4 import android.app.Activity;
 5 import android.app.PendingIntent; 
 6 import android.content.Intent;
 7 import android.net.Uri;
 8 import android.nfc.NfcAdapter;
 9 import android.nfc.NfcAdapter.CreateBeamUrisCallback;
10 import android.nfc.NfcEvent;
11 import android.os.Bundle;
12 
13  
14 public class NFCFileActivity extends Activity implements CreateBeamUrisCallback {
15     private NfcAdapter mNfcAdapter;
16     private PendingIntent mPendingIntent;
17     private final String targetFilename = "/sdcard/temp_icon.png";
18 
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_nfcfile);
23         
24         mNfcAdapter = mNfcAdapter.getDefaultAdapter(this);
25         mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
26                 getClass()), 0);
27 
28         try {
29             InputStream is = getResources().getAssets().open("icon.png");
30             FileOutputStream fos = new FileOutputStream(targetFilename);
31             byte[] buffer = new byte[10000];
32             int n = is.read(buffer);
33             fos.write(buffer, 0, n);
34             fos.close();
35             is.close();
36         } catch (Exception e) {
37 
38         }
39         mNfcAdapter.setBeamPushUrisCallback(this, this);
40     }
41 
42     @Override
43     public Uri[] createBeamUris(NfcEvent event) {
44         Uri[] uris = new Uri[1];
45         Uri uri = Uri.parse("file://" + targetFilename);
46         uris[0] = uri;
47         return uris;
48     }
49 
50 }  

1 <uses-permission android:name="android.permission.NFC" />
2     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

   

       其实内部是蓝牙在传输,NFC已经不起作用了,可以相隔一定距离,即使NFC中断也没关系,因为是蓝牙在传输。

 

转载于:https://www.cnblogs.com/androidsj/p/3856443.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

15、NFC技术:使用Android Beam技术传输文件 的相关文章

  • 更改EditText下划线的颜色

    我尝试在以下命令的帮助下更改 EditText 的下划线颜色这个线程 https stackoverflow com questions 34592451 change size of edittext bottom border 我做了同
  • Android 的 Firestore 超时

    我目前正在构建一个应用程序 将用户的博客文章保存在Firestore服务器 一切正常 但我发现该帖子在不稳定的互联网连接下无法上传 我尝试设置一个超时到Firestore实例 但 Firestore 库似乎没有超时选项 问题是 由于没有超时
  • Cordova 无法构建项目

    Update 新读者 请检查我最后的编辑 更新cordova后 无法构建 运行 Mac mini de Toni funcook toniweb sudo cordova build Password Running command Use
  • 如何使用 JavaScript 提高音频加载速度?

    我已经创建了播放代码 mp3使用 JavaScript 文件 但该文件在 Android 上播放需要很长时间 我想在点击文本图像后快速播放声音 如何提高 Android 的加载速度 我的 JavaScript 代码 if window au
  • Android studio总是乱码

    I have change the encode to UTF 8 so I got this problem who can help me I reinstalled it twice but android studio1 4 Alw
  • 更改密码 将重力切换到左侧(对于 RTL 语言)

    I use TextInputLayout从用户那里获取密码 如下所示
  • 使用 IntentService 使用 Camera2 拍照

    我正在尝试创建一个可以拍照但不显示预览的应用程序 使用本教程 https www youtube com watch v oPu42I0HSi4 https www youtube com watch v oPu42I0HSi4如果我使用和
  • 在原生 Android 应用程序中集成多个 Unity 游戏

    我有一个原生 Android 应用程序 我想在其中嵌入多个 Unity 游戏 我跟着link https medium com davidbeloosesky embedded unity within android app 7061f4
  • android.provider.Settings.ACTION_BLUETOOTH_SETTINGS 在三星上崩溃

    任何人都知道为什么 Intent pairIntent new Intent android provider Settings ACTION BLUETOOTH SETTINGS startActivityForResult pairIn
  • Gradle 构建失败 - 无法解压

    我正在使用 android studio 做一个项目 最近它显示了一个错误your SDK is missing or out of date所以 我再次下载了SDK 现在它显示一个错误 Gradle Build failed 错误如下 E
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • Retrofit RxAndroid 为 api 调用制作包装器

    我想在改造中为 api 调用创建一个包装器 这样我就可以在常见位置显示 ProgressDialog 并处理常见响应 我通过创建这样的包装器来实现这一点 public static
  • SpannableString 中的 URLSpan

    我正在使用这个例子SpannableString http developer android com resources samples ApiDemos src com example android apis text Link ht
  • 清单合并失败:需要为 显式指定 android:exported

    我的清单文件有问题 错误消息 清单合并失败 android 需要为 明确指定导出 面向 Android 12 及更高版本的应用需要指定显式值android exported当相应的组件定义了意图过滤器时 有关详细信息 请参阅 https d
  • 选择活动时运行时崩溃

    首先我想说我几乎没有 Android 经验 这是我在 Android 中的第一个项目 而且我的老师不太擅长教学 所以我对任何过度的无知表示歉意 在进一步讨论之前先解释一下 我的应用程序的目标本质上是能够记录您在某些活动上花费了多少时间 记录
  • RecyclerView 来自 Firebase 的部分和数据

    您好 我正在开发一个应用程序 在其中我必须使用 Firebase 填充数据回收器视图 准备就绪 现在我想做的是用 data firebase 填写一个 recyclerview 但有一些部分将成为托管 data firebase 的父级 我
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • Android 通知上有按钮

    我正在尝试使用 2 个按钮发出通知 一个带我回到活动 另一个将其关闭 有谁知道如何捕获按钮单击事件 请记住活动已暂停 我很高兴发布它 经过一夜的工作 我发现了一些东西 那么 我们开始吧 1 为您的通知创建 xml 布局文件 2 使用Noti
  • 在活动之间共享菜单栏

    我的应用程序上有一个菜单栏 我需要在 5 个活动之间共享该菜单栏 我的菜单栏 5 个允许在活动之间切换的按钮 对于任何活动具有完全相同的 UI 和相同的行为 因此我想共享菜单栏 XML 视图代码和控制器代码 我已经找到了一种使用共享 XML

随机推荐