1<?xml version="1.0" encoding="utf-8"?>
2<!--
3  ~ Copyright (C) 2024 The Android Open Source Project
4  ~
5  ~ Licensed under the Apache License, Version 2.0 (the "License");
6  ~ you may not use this file except in compliance with the License.
7  ~ You may obtain a copy of the License at
8  ~
9  ~      http://www.apache.org/licenses/LICENSE-2.0
10  ~
11  ~ Unless required by applicable law or agreed to in writing, software
12  ~ distributed under the License is distributed on an "AS IS" BASIS,
13  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  ~ See the License for the specific language governing permissions and
15  ~ limitations under the License.
16  -->
17
18<!-- NOTE: The shared UID is left in for legacy reasons, and can be safely
19     removed once T is the oldest supported device. It has no impact on T+
20     devices.
21-->
22<manifest xmlns:android="http://schemas.android.com/apk/res/android"
23    package="com.android.nfc.emulator">
24    <uses-sdk android:minSdkVersion="35" android:targetSdkVersion="35"/>
25    <uses-permission android:name="android.permission.INTERNET" />
26    <uses-permission android:name="android.permission.NFC" />
27    <uses-permission android:name="android.permission.NFC_TRANSACTION_EVENT" />
28    <uses-permission android:name="android.permission.NFC_PREFERRED_PAYMENT_INFO" />
29    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
30
31    <application>
32        <!-- Add any classes that implement the Snippet interface as meta-data, whose
33         value is a comma-separated string, each section being the package path
34         of a snippet class -->
35        <meta-data
36            android:name="mobly-snippets"
37            android:value="com.android.nfc.emulator.NfcEmulatorDeviceSnippet"/>
38        <activity
39            android:name=".PollingLoopEmulatorActivity"
40            android:label="Polling Loop Emulator"
41            android:exported="true">
42        </activity>
43        <activity
44            android:name=".TwoPollingFrameEmulatorActivity"
45            android:label="Two Polling Frame Emulator"
46            android:exported="true">
47        </activity>
48        <activity
49            android:name=".SingleNonPaymentEmulatorActivity"
50            android:label="Single Non Payment Emulator"
51            android:exported="true">
52        </activity>
53        <activity
54            android:name=".SinglePaymentEmulatorActivity"
55            android:label="Single Payment Emulator"
56            android:exported="true">
57        </activity>
58        <activity
59            android:name=".OffHostEmulatorActivity"
60            android:label="Off Host Emulator"
61            android:exported="true">
62        </activity>
63        <activity
64            android:name=".OnAndOffHostEmulatorActivity"
65            android:label="On and Off Host Emulator"
66            android:exported="true">
67        </activity>
68        <activity
69            android:name=".DualPaymentEmulatorActivity"
70            android:label="Dual Payment Emulator"
71            android:exported="true">
72        </activity>
73        <activity
74            android:name=".ForegroundPaymentEmulatorActivity"
75            android:label="Foreground Payment Emulator"
76            android:exported="true">
77        </activity>
78        <activity
79            android:name=".DynamicAidEmulatorActivity"
80            android:label="Dynamic Payment AID emulator"
81            android:exported="true">
82        </activity>
83        <activity
84            android:name=".PrefixPaymentEmulatorActivity"
85            android:label="Prefix Payment emulator"
86            android:exported="true">
87        </activity>
88        <activity
89            android:name=".PrefixPaymentEmulator2Activity"
90            android:label="Prefix Payment 2 emulator"
91            android:exported="true">
92        </activity>
93        <activity
94            android:name=".DualNonPaymentEmulatorActivity"
95            android:label="Dual Non Payment emulator"
96            android:exported="true">
97        </activity>
98        <activity
99            android:name=".DualNonPaymentPrefixEmulatorActivity"
100            android:label="Dual Non-Payment Prefix emulator"
101            android:exported="true">
102        </activity>
103        <activity
104            android:name=".ForegroundNonPaymentEmulatorActivity"
105            android:label="Foreground Non Payment emulator"
106            android:exported="true">
107        </activity>
108        <activity
109            android:name=".ThroughputEmulatorActivity"
110            android:label="Throughput emulator"
111            android:exported="true">
112        </activity>
113        <activity
114            android:name=".TapTestEmulatorActivity"
115            android:label="Tap Test emulator"
116            android:exported="true">
117        </activity>
118        <activity
119            android:name=".LargeNumAidsEmulatorActivity"
120            android:label="Large Num Aids emulator"
121            android:exported="true">
122        </activity>
123        <activity
124            android:name=".ScreenOffPaymentEmulatorActivity"
125            android:label="Screen Off Payment emulator"
126            android:exported="true">
127        </activity>
128        <activity
129            android:name=".ProtocolParamsEmulatorActivity"
130            android:label="Protocol Params emulator"
131            android:exported="true">
132        </activity>
133        <activity android:name=".ConflictingNonPaymentEmulatorActivity"
134            android:label="Conflicting Non-Payment Emulator"
135            android:exported="true">
136        </activity>
137        <activity android:name=".ConflictingNonPaymentPrefixEmulatorActivity"
138            android:label="Conflicting Non-Payment Prefix Emulator"
139            android:exported="true">
140        </activity>
141        <activity android:name=".ScreenOnOnlyOffHostEmulatorActivity"
142            android:label="Screen-On Off Host Emulator"
143            android:exported="true">
144        </activity>
145        <service android:name="com.android.nfc.service.PollingLoopService" android:exported="true"
146            android:permission="android.permission.BIND_NFC_SERVICE"
147            android:enabled="true">
148            <intent-filter>
149                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
150                <category android:name="android.intent.category.DEFAULT"/>
151            </intent-filter>
152            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list"/>
153        </service>
154        <service android:name="com.android.nfc.service.PollingLoopService2" android:exported="true"
155            android:permission="android.permission.BIND_NFC_SERVICE"
156            android:enabled="true">
157            <intent-filter>
158                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
159                <category android:name="android.intent.category.DEFAULT"/>
160            </intent-filter>
161            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list_2"/>
162        </service>
163        <service android:name="com.android.nfc.service.TransportService1" android:exported="true"
164            android:permission="android.permission.BIND_NFC_SERVICE"
165            android:enabled="false">
166            <intent-filter>
167                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
168                <category android:name="android.intent.category.DEFAULT"/>
169            </intent-filter>
170            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_aid_list_1"/>
171        </service>
172        <service android:name="com.android.nfc.service.TransportService2" android:exported="true"
173            android:permission="android.permission.BIND_NFC_SERVICE"
174            android:enabled="false">
175            <intent-filter>
176                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
177                <category android:name="android.intent.category.DEFAULT"/>
178            </intent-filter>
179            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_aid_list_2"/>
180        </service>
181        <service android:name="com.android.nfc.service.AccessService" android:exported="true"
182            android:permission="android.permission.BIND_NFC_SERVICE"
183            android:enabled="false">
184            <intent-filter>
185                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
186                <category android:name="android.intent.category.DEFAULT"/>
187            </intent-filter>
188            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list"/>
189        </service>
190        <service android:name="com.android.nfc.service.PaymentService1" android:exported="true"
191            android:permission="android.permission.BIND_NFC_SERVICE"
192            android:enabled="false">
193            <intent-filter>
194                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
195                <category android:name="android.intent.category.DEFAULT"/>
196            </intent-filter>
197            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
198        </service>
199        <service android:name="com.android.nfc.service.OffHostService" android:exported="true"
200            android:permission="android.permission.BIND_NFC_SERVICE"
201            android:enabled="false">
202            <intent-filter>
203                <action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE"/>
204                <category android:name="android.intent.category.DEFAULT"/>
205            </intent-filter>
206            <meta-data android:name="android.nfc.cardemulation.off_host_apdu_service" android:resource="@xml/offhost_aid_list"/>
207        </service>
208        <service android:name="com.android.nfc.service.PaymentService2" android:exported="true"
209            android:permission="android.permission.BIND_NFC_SERVICE"
210            android:enabled="false">
211            <intent-filter>
212                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
213                <category android:name="android.intent.category.DEFAULT"/>
214            </intent-filter>
215            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_2"/>
216        </service>
217        <service android:name="com.android.nfc.service.PaymentServiceDynamicAids" android:exported="true"
218            android:permission="android.permission.BIND_NFC_SERVICE"
219            android:enabled="false">
220            <intent-filter>
221                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
222                <category android:name="android.intent.category.DEFAULT"/>
223            </intent-filter>
224            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
225        </service>
226        <service android:name="com.android.nfc.service.PrefixPaymentService1" android:exported="true"
227            android:permission="android.permission.BIND_NFC_SERVICE"
228            android:enabled="false">
229            <intent-filter>
230                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
231                <category android:name="android.intent.category.DEFAULT"/>
232            </intent-filter>
233            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_prefix_aid_list"/>
234        </service>
235        <service android:name="com.android.nfc.service.PrefixPaymentService2" android:exported="true"
236            android:permission="android.permission.BIND_NFC_SERVICE"
237            android:enabled="false">
238            <intent-filter>
239                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
240                <category android:name="android.intent.category.DEFAULT"/>
241            </intent-filter>
242            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_prefix_aid_list_2"/>
243        </service>
244        <service android:name="com.android.nfc.service.PrefixTransportService1" android:exported="true"
245            android:permission="android.permission.BIND_NFC_SERVICE"
246            android:enabled="false">
247            <intent-filter>
248                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
249                <category android:name="android.intent.category.DEFAULT"/>
250            </intent-filter>
251            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_prefix_aid_list_1"/>
252        </service>
253        <service android:name="com.android.nfc.service.PrefixTransportService2" android:exported="true"
254            android:permission="android.permission.BIND_NFC_SERVICE"
255            android:enabled="false">
256            <intent-filter>
257                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
258                <category android:name="android.intent.category.DEFAULT"/>
259            </intent-filter>
260            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_prefix_aid_list_2"/>
261        </service>
262        <service android:name="com.android.nfc.service.PrefixAccessService" android:exported="true"
263            android:permission="android.permission.BIND_NFC_SERVICE"
264            android:enabled="false">
265            <intent-filter>
266                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
267                <category android:name="android.intent.category.DEFAULT"/>
268            </intent-filter>
269            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_prefix_aid_list"/>
270        </service>
271        <service android:name="com.android.nfc.service.ThroughputService" android:exported="true"
272            android:permission="android.permission.BIND_NFC_SERVICE"
273            android:enabled="false">
274            <intent-filter>
275                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
276                <category android:name="android.intent.category.DEFAULT"/>
277            </intent-filter>
278            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/throughput_aid_list"/>
279        </service>
280        <service android:name="com.android.nfc.service.LargeNumAidsService" android:exported="true"
281            android:permission="android.permission.BIND_NFC_SERVICE"
282            android:enabled="false">
283            <intent-filter>
284                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
285                <category android:name="android.intent.category.DEFAULT"/>
286            </intent-filter>
287            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
288        </service>
289        <service android:name="com.android.nfc.service.ScreenOffPaymentService" android:exported="true"
290            android:permission="android.permission.BIND_NFC_SERVICE"
291            android:enabled="false">
292            <intent-filter>
293                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
294                <category android:name="android.intent.category.DEFAULT"/>
295            </intent-filter>
296            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/screen_off_payment_aid_list"/>
297        </service>
298        <service android:name="com.android.nfc.service.ScreenOnOnlyOffHostService" android:exported="true"
299            android:permission="android.permission.BIND_NFC_SERVICE"
300            android:enabled="false">
301            <intent-filter>
302                <action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE"/>
303                <category android:name="android.intent.category.DEFAULT"/>
304            </intent-filter>
305            <meta-data android:name="android.nfc.cardemulation.off_host_apdu_service" android:resource="@xml/screen_on_only_offhost_aid_list"/>
306        </service>
307    </application>
308    <instrumentation android:name="com.google.android.mobly.snippet.SnippetRunner"
309        android:targetPackage="com.android.nfc.emulator"
310        android:label="NFC Multi Device Emulator Snippet" />
311</manifest>
312