Android / NFC:在没有新Intent的情况下在onCreate()中获取标签

曼努埃尔

我正在开发NFC应用程序。要启动我的应用,我正在使用带有AAR NDEF记录的NDEF标签。

这很好。但是现在我想直接使用该应用读取标签内容。我怎样才能做到这一点?

(当我从手机上删除标签并再次触摸它时,它已经可以工作了,但是我想取消此步骤。)

更新:更多细节好了,为了更加清楚,这是我当前代码的某些部分。

private NfcAdapter nfcAdapter;
private static final int PENDING_INTENT_TECH_DISCOVERED = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_l);
    text_output = (TextView) findViewById(R.id.textView2);

    NfcAdapter adapter = ((NfcManager) getSystemService(Context.NFC_SERVICE))
            .getDefaultAdapter();       
}

@Override
public void onResume() {
    super.onResume();

    nfcAdapter = ((NfcManager) this.getSystemService(Context.NFC_SERVICE))
            .getDefaultAdapter();

    PendingIntent pi = createPendingResult(PENDING_INTENT_TECH_DISCOVERED,
            new Intent(), 0);

    nfcAdapter.enableForegroundDispatch(this, pi,
            new IntentFilter[] { new IntentFilter(
                    NfcAdapter.ACTION_TECH_DISCOVERED) }, new String[][] {
                    new String[] { "android.nfc.tech.NdefFormatable" },
                    new String[] { "android.nfc.tech.Ndef" } });
} 

@Override
public void onPause() {
    super.onPause();
    nfcAdapter.disableForegroundDispatch(this);
}

@Override
protected void onActivityResult(int requestCode, int resultCode,
        final Intent data) {
    switch (requestCode) {
    case PENDING_INTENT_TECH_DISCOVERED:
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                doTagOperation(data);
            }
        };
        new Thread(runnable).start();

        break;
    }
}

private void doTagOperation(Intent data) {

    try {           
        String action = data.getAction();
        if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {

            Tag tag = data.getParcelableExtra(NfcAdapter.EXTRA_TAG);                                
            Ndef ndefTag = Ndef.get(tag);
        }
    } catch (Exception ex) {
                ...
    }
}

要启动该应用程序,我在标签上使用AAR-NDEF-Record,可以通过这种方式创建该标签:NdefRecord ndr = NdefRecord.createApplicationRecord(“ com.example.something”);

因此,我想要的是:未启动应用程序时触摸标签即可启动应用程序(已经运行),然后它应直接读取标签,而无需将手机从标签移开并再次触摸。

迈克尔·罗兰

如果要在活动开始时接收NDEF发现意图,则需要添加一个意图过滤器,该过滤器会在标记的NDEF消息上触发到应用程序清单:

<activity ... >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

我想您已经具备了上述条件,因此您需要添加NDEF意图过滤器:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />

您可以使用基于URI的触发器:

        <data android:scheme="http" android:host="mroland.at" android:pathPrefix="/test" />

或基于MIME的方案:

        <data android:mimeType="application/vnd.mroland.test" />

或者,如果您想接收NDEF发现的仅包含AAR的标签的意图(我必须承认我从未测试过,所以我仅假设这应该可行):

        <data android:scheme="vnd.android.nfc" android:host="ext"
              android:pathPrefix="/android.com:pkg" />

但是您必须使用其中之一。(至少必须在大多数设备上使用。某些设备/ Android版本即使没有data元素也会接受意图过滤器。)

    </intent-filter>
</activity>

然后,您可以得到意向的onCreate()onStart()onResume()或任何你想要使用读它getIntent()的方法。

请注意,如果您没有为NDEF_DISCOVERED清单添加意图过滤器,则带有针对您的应用程序的AAR的NDEF消息将导致MAIN具有类别的意图操作LAUNCHER传递到声明此类意图过滤器的第一个活动。在这种情况下,您将不会收到NDEF消息。因此,如果您想接收NDEF消息则必须为声明一个意图过滤器NDEF_DISCOVERED在这种情况下,您可以通过NDEF_DISCOVERED为特定活动设置意图过滤器来选择由AAR启动的活动。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在没有清单许可的情况下在Android中访问NFC吗?

来自分类Dev

在没有音频的情况下在android中录制视频

来自分类Dev

在不使用Intent的情况下在android中裁剪图像

来自分类Dev

在没有root的情况下在android中使用代理

来自分类Dev

在没有Youtube API的情况下在Android应用程序中播放视频

来自分类Dev

在没有OnClickListener的情况下在Android应用程序中检索Firebase数据

来自分类Dev

Android是否可以在没有任何库的情况下在应用中读取/打开pdf文件?

来自分类Dev

在没有任何对话框的情况下在Android中启用位置服务

来自分类Dev

如何在没有用户关注的情况下在Android M中启用Android权限

来自分类Dev

这有可能在没有弹出窗口的情况下在android中打印网页吗?

来自分类Dev

我们是否有可能在没有GPS的情况下在android中获得当前速度?

来自分类Dev

可以在没有api键的情况下在Android上运行mapview吗?

来自分类Dev

在没有EditText的情况下在NumberPassword模式下强制Android的软键盘

来自分类Dev

我可以在没有预览的情况下在服务中使用Android相机吗?

来自分类Dev

我可以在没有模拟器的情况下在PC上运行android应用吗?

来自分类Dev

在没有流行库的情况下在Android中进行刷新

来自分类Dev

我可以在没有模拟器的情况下在PC上运行android应用吗?

来自分类Dev

从Android NFC Intent获取URI

来自分类Dev

如何在没有根设备的情况下在系统/应用目录中安装android应用,以便用户无法卸载该应用

来自分类Dev

在没有通知有效载荷的情况下在Android和iOS上使用GCM

来自分类Dev

像Facebook,Whatsapp这样的Android应用程序如何在没有通知的情况下在前台提供服务?

来自分类Dev

在没有OpenCv软件包管理器的情况下在Eclipse上创建Android OpenCV项目

来自分类Dev

如何在没有ViewSwitcher的情况下在Android中将一组TextView转换为EditText?

来自分类Dev

如何在没有用户交互的情况下在Android中发送电子邮件?

来自分类Dev

如何在没有notifyDataSetChanged的情况下在Android上动态将项目添加到GridView?

来自分类Dev

如何在没有管理员的情况下在USB驱动器上安装android studio

来自分类Dev

Ionic框架:如何在没有最新API版本的情况下在Android平板电脑上运行

来自分类Dev

Android:在没有计时器的情况下在应用程序上创建启动画面?

来自分类Dev

在没有 Android Studio 的情况下在 Google Play 控制台上部署移动应用程序

Related 相关文章

  1. 1

    我可以在没有清单许可的情况下在Android中访问NFC吗?

  2. 2

    在没有音频的情况下在android中录制视频

  3. 3

    在不使用Intent的情况下在android中裁剪图像

  4. 4

    在没有root的情况下在android中使用代理

  5. 5

    在没有Youtube API的情况下在Android应用程序中播放视频

  6. 6

    在没有OnClickListener的情况下在Android应用程序中检索Firebase数据

  7. 7

    Android是否可以在没有任何库的情况下在应用中读取/打开pdf文件?

  8. 8

    在没有任何对话框的情况下在Android中启用位置服务

  9. 9

    如何在没有用户关注的情况下在Android M中启用Android权限

  10. 10

    这有可能在没有弹出窗口的情况下在android中打印网页吗?

  11. 11

    我们是否有可能在没有GPS的情况下在android中获得当前速度?

  12. 12

    可以在没有api键的情况下在Android上运行mapview吗?

  13. 13

    在没有EditText的情况下在NumberPassword模式下强制Android的软键盘

  14. 14

    我可以在没有预览的情况下在服务中使用Android相机吗?

  15. 15

    我可以在没有模拟器的情况下在PC上运行android应用吗?

  16. 16

    在没有流行库的情况下在Android中进行刷新

  17. 17

    我可以在没有模拟器的情况下在PC上运行android应用吗?

  18. 18

    从Android NFC Intent获取URI

  19. 19

    如何在没有根设备的情况下在系统/应用目录中安装android应用,以便用户无法卸载该应用

  20. 20

    在没有通知有效载荷的情况下在Android和iOS上使用GCM

  21. 21

    像Facebook,Whatsapp这样的Android应用程序如何在没有通知的情况下在前台提供服务?

  22. 22

    在没有OpenCv软件包管理器的情况下在Eclipse上创建Android OpenCV项目

  23. 23

    如何在没有ViewSwitcher的情况下在Android中将一组TextView转换为EditText?

  24. 24

    如何在没有用户交互的情况下在Android中发送电子邮件?

  25. 25

    如何在没有notifyDataSetChanged的情况下在Android上动态将项目添加到GridView?

  26. 26

    如何在没有管理员的情况下在USB驱动器上安装android studio

  27. 27

    Ionic框架:如何在没有最新API版本的情况下在Android平板电脑上运行

  28. 28

    Android:在没有计时器的情况下在应用程序上创建启动画面?

  29. 29

    在没有 Android Studio 的情况下在 Google Play 控制台上部署移动应用程序

热门标签

归档