2011-10-01 40 views

Trả lời

49
NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE); 
NfcAdapter adapter = manager.getDefaultAdapter(); 
if (adapter != null && adapter.isEnabled()) { 
    // adapter exists and is enabled. 
} 

Bạn không thể bật NFC theo lập trình. Người dùng phải thực hiện thủ công thông qua nút cài đặt hoặc phần cứng.

+0

vì vậy nếu giá trị trả lại là FALSE, điều đó có nghĩa là thiết bị không có khả năng NFC, đó có phải là @ userSeven7s đúng không? – gumuruh

+0

Điều đó không đúng. Nếu bộ điều hợp là null, thiết bị không có NFC. Giải thích trên [Trang web dành cho nhà phát triển] (http://developer.android.com/guide/topics/connectivity/nfc/nfc.html#manifest) – Marko

7

Sử dụng PackageManagerhasSystemFeature("android.hardware.nfc"), khớp với phần tử <uses-feature android:name="android.hardware.nfc" android:required="false" /> bạn phải có trong tệp kê khai của mình.

Vì 2.3.3 bạn cũng có thể sử dụng NfcAdapter.getDefaultAdapter() để nhận bộ điều hợp (nếu có) và gọi phương thức isEnabled() để kiểm tra xem NFC hiện có được bật hay không.

+0

mã xin vui lòng @Ahsan – gumuruh

6

tôi có thể muộn một chút ở đây, nhưng tôi đã thực hiện một 'hoàn toàn' example với phát hiện của

  1. NFC khả năng (phần cứng), và
  2. bang NFC ban đầu (kích hoạt hay vô hiệu hóa trong cài đặt), và
  3. những thay đổi đối với nhà nước

tôi cũng đã thêm một tia tương ứng example trong đó sử dụng các

nfcAdapter.isNdefPushEnabled() 

phương pháp được giới thiệu trong phiên bản Android sau để phát hiện trạng thái chùm như trong 2) và 3).

0
mNfcAdapter = NfcAdapter.getDefaultAdapter(this.getApplicationContext()); 
    try { 
     if (mNfcAdapter != null) { 
      result = true; 
     } 
    } 

Chúng tôi có thể xác minh bằng NfcAdapter có ngữ cảnh.

Các vấn đề liên quan