通过反射机制直接调用NFC 打开/关闭方法,废话不多说直接上代码
private NfcManager mNFCManager;
private NfcAdapter adapter;
/**
*初始化
*/
mNFCManager =(NfcManager)mContext.getSystemService(Context.NFC_SERVICE);
adapter = mNFCManager.getDefaultAdapter();
/**
* open NFC
*/
private void enable(){
try {
Method method =adapter.getClass().getDeclaredMethod("enable");
method.invoke(adapter);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
/**
* close NFC
*/
private void disable(){
try {
Method method = adapter.getClass().getDeclaredMethod("disable");
method.invoke(adapter);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
/**
* 判断NFC 是否开启
* @param context
* @return
*/
public boolean hasNfc(Context context){
boolean bRet=false;
if(context==null)
return bRet;
if (adapter != null && adapter.isEnabled()) {
// adapter存在,能启用
bRet=true;
}
return bRet;
}