1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.nfc;
18 
19 import android.annotation.SystemService;
20 import android.compat.annotation.UnsupportedAppUsage;
21 import android.content.Context;
22 import android.os.Build;
23 
24 /**
25  * High level manager used to obtain an instance of an {@link NfcAdapter}.
26  * <p>
27  * Use {@link android.content.Context#getSystemService(java.lang.String)}
28  * with {@link Context#NFC_SERVICE} to create an {@link NfcManager},
29  * then call {@link #getDefaultAdapter} to obtain the {@link NfcAdapter}.
30  * <p>
31  * Alternately, you can just call the static helper
32  * {@link NfcAdapter#getDefaultAdapter(android.content.Context)}.
33  *
34  * <div class="special reference">
35  * <h3>Developer Guides</h3>
36  * <p>For more information about using NFC, read the
37  * <a href="{@docRoot}guide/topics/nfc/index.html">Near Field Communication</a> developer guide.</p>
38  * </div>
39  *
40  * @see NfcAdapter#getDefaultAdapter(android.content.Context)
41  */
42 @SystemService(Context.NFC_SERVICE)
43 public final class NfcManager {
44     private final NfcAdapter mAdapter;
45 
46     /**
47      * @hide
48      */
49     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
NfcManager(Context context)50     public NfcManager(Context context) {
51         NfcAdapter adapter;
52         context = context.getApplicationContext();
53         if (context == null) {
54             throw new IllegalArgumentException(
55                     "context not associated with any application (using a mock context?)");
56         }
57         try {
58             adapter = NfcAdapter.getNfcAdapter(context);
59         } catch (UnsupportedOperationException e) {
60             adapter = null;
61         }
62         mAdapter = adapter;
63     }
64 
65     /**
66      * Get the default NFC Adapter for this device.
67      *
68      * @return the default NFC Adapter
69      */
getDefaultAdapter()70     public NfcAdapter getDefaultAdapter() {
71         return mAdapter;
72     }
73 }
74