New file |
| | |
| | | package com.dayu.qihealonelibrary.activity; |
| | | import android.app.Activity; |
| | | import android.app.PendingIntent; |
| | | import android.content.Intent; |
| | | import android.nfc.NfcAdapter; |
| | | import android.os.Handler; |
| | | |
| | | import com.dayu.baselibrary.utils.TipUtil; |
| | | import com.dayu.qihealonelibrary.card.UserCard; |
| | | |
| | | |
| | | /** |
| | | * Author:Createdby zuo on 2018/12/2. |
| | | * Email:584182977@qq.com |
| | | * Description: |
| | | * 子类在onNewIntent方法中进行NFC标签相关操作。 |
| | | * launchMode设置为singleTop或singelTask,保证Activity的重用唯一 |
| | | * 在onNewIntent方法中执行intent传递过来的Tag数据 |
| | | * 将NFC标签卡靠近手机后部(NFC标签卡可网上自行购买) |
| | | */ |
| | | public class BaseNfcActivity extends BaseActivity { |
| | | |
| | | |
| | | protected NfcAdapter mNfcAdapter; |
| | | private PendingIntent mPendingIntent; |
| | | |
| | | volatile UserCard userCard; |
| | | |
| | | /** |
| | | * onCreat->onStart->onResume->onPause->onStop->onDestroy |
| | | * 启动Activity,界面可见时. |
| | | */ |
| | | |
| | | |
| | | |
| | | public static int READER_FLAGS = |
| | | NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK; |
| | | |
| | | @Override |
| | | protected void onStart() { |
| | | super.onStart(); |
| | | //此处adapter需要重新获取,否则无法获取message |
| | | mNfcAdapter = NfcAdapter.getDefaultAdapter(this); |
| | | Intent intent = new Intent(this, getClass()); |
| | | |
| | | //一旦截获NFC消息,就会通过PendingIntent调用窗口 |
| | | mPendingIntent = PendingIntent.getActivity(this, 0, intent, 0); |
| | | |
| | | // mLoyaltyCardReader = new LoyaltyCardReader(this); |
| | | // if (mNfcAdapter != null) { |
| | | // mNfcAdapter.enableReaderMode(this, mLoyaltyCardReader, READER_FLAGS, null); |
| | | // } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 获得焦点,按钮可以点击 |
| | | */ |
| | | @Override |
| | | public void onResume() { |
| | | super.onResume(); |
| | | if (!ifNFCUse(this)) { |
| | | } |
| | | //设置处理优于所有其他NFC的处理 |
| | | if (mNfcAdapter != null) |
| | | mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, null, null); |
| | | } |
| | | |
| | | /** |
| | | * 暂停Activity,界面获取焦点,按钮可以点击 |
| | | */ |
| | | @Override |
| | | public void onPause() { |
| | | super.onPause(); |
| | | //恢复默认状态 |
| | | if (mNfcAdapter != null) |
| | | mNfcAdapter.disableForegroundDispatch(this); |
| | | // mNfcAdapter.disableReaderMode(this); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 检测工作,判断设备的NFC支持情况 |
| | | * |
| | | * @return |
| | | */ |
| | | protected Boolean ifNFCUse(Activity context) { |
| | | if (mNfcAdapter == null) { |
| | | TipUtil.show(context, "设备不支持NFC!", new TipUtil.TipListener() { |
| | | @Override |
| | | public void onCancle() { |
| | | BaseNfcActivity.this.finish(); |
| | | } |
| | | }); |
| | | return false; |
| | | } |
| | | if (mNfcAdapter != null && !mNfcAdapter.isEnabled()) { |
| | | TipUtil.show(context, "请在系统设置中先启用NFC功能!"); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | |
| | | } |