禁止梁触摸模式(Disable beam touch mode)

2019-07-29 08:01发布

我有一个应用程序,其中一个特殊的活动A能够传送数据:

当Device1的是活性和你设备2配对(无论身在何处设备2,即使该应用程序不启动)的数据将光束触摸后成功transfferred。 活动A有意向过滤器:

       <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="application/de.my.app" />
        </intent-filter>

上做必要的推动。

但是,当我在另一个活动B,这也使得

  1. 另一台设备启动应用程序
  2. 如果让应用程序启动两个设备上的触摸模式出现。 我不希望任何设备有变化,现在要做的光束。 如果你是Android的桌面上,并在配对设备,你没有得到的光束过于对话框。 你只是得到一个小的震动。 这就是我想在这里。 可能吗?

提前致谢!

Answer 1:

在活动B,您可以打开前景调度,忽略任何NFC的意图和禁止发送Android Beam功能的消息:

private NfcAdapter nfcAdapter;

protected void onCreate(Bundle savedInstanceState) {
  ...
  nfcAdapter = NfcAdapter.getDefaultAdapter(this);
  // turn off sending Android Beam
  nfcAdapter.setNdefPushMessage(null, this);
}

protected void onResume() {
  // catch all NFC intents
  Intent intent = new Intent(getApplicationContext(), getClass());
  intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
  PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
  nfcAdapter.enableForegroundDispatch(this, pintent, null, null);
}

protected void onPause() {
  nfcAdapter.disableForegroundDispatch(this);
}

protected void onNewIntent(Intent intent) {
  if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction()) {
    return; // ignore NFC intents
  }
}

你可以让这个更具体一点仅通过过滤的Ndef技术在PendingIntent和/或在检查onNewIntent()的其他什么技术Tag对象支持。 安卓波束意图总是有Ndef技术并没有其他人。



文章来源: Disable beam touch mode