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=".AccessServiceTurnObserveModeOnProcessApduEmulatorActivity"
40            android:label="Access Service Observe Mode Emulator"
41            android:exported="true">
42        </activity>
43        <activity android:name=".PollingAndOffHostEmulatorActivity"
44            android:label="Polling And Off Host Emulator"
45            android:exported="true">
46        </activity>
47        <activity
48            android:name=".PollingLoopEmulatorActivity"
49            android:label="Polling Loop Emulator"
50            android:exported="true">
51        </activity>
52        <activity
53            android:name=".TwoPollingFrameEmulatorActivity"
54            android:label="Two Polling Frame Emulator"
55            android:exported="true">
56        </activity>
57        <activity
58            android:name=".SimpleEmulatorActivity"
59            android:label="Simple Emulator"
60            android:exported="true">
61        </activity>
62        <activity
63            android:name=".OffHostEmulatorActivity"
64            android:label="Off Host Emulator"
65            android:exported="true">
66        </activity>
67        <activity
68            android:name=".OnAndOffHostEmulatorActivity"
69            android:label="On and Off Host Emulator"
70            android:exported="true">
71        </activity>
72        <activity
73            android:name=".DynamicAidEmulatorActivity"
74            android:label="Dynamic Payment AID emulator"
75            android:exported="true">
76        </activity>
77        <activity
78            android:name=".PrefixPaymentEmulatorActivity"
79            android:label="Prefix Payment emulator"
80            android:exported="true">
81        </activity>
82        <activity
83            android:name=".PrefixPaymentEmulator2Activity"
84            android:label="Prefix Payment 2 emulator"
85            android:exported="true">
86        </activity>
87        <activity
88            android:name=".DualNonPaymentPrefixEmulatorActivity"
89            android:label="Dual Non-Payment Prefix emulator"
90            android:exported="true">
91        </activity>
92        <activity
93            android:name=".ThroughputEmulatorActivity"
94            android:label="Throughput emulator"
95            android:exported="true">
96        </activity>
97        <activity
98            android:name=".LargeNumAidsEmulatorActivity"
99            android:label="Large Num Aids emulator"
100            android:exported="true">
101        </activity>
102        <activity
103            android:name=".ScreenOffPaymentEmulatorActivity"
104            android:label="Screen Off Payment emulator"
105            android:exported="true">
106        </activity>
107        <activity android:name=".ConflictingNonPaymentPrefixEmulatorActivity"
108            android:label="Conflicting Non-Payment Prefix Emulator"
109            android:exported="true">
110        </activity>
111        <activity android:name=".ScreenOnOnlyOffHostEmulatorActivity"
112            android:label="Screen-On Off Host Emulator"
113            android:exported="true">
114        </activity>
115        <activity
116            android:name=".PN532Activity"
117            android:label="PN532 Activity"
118            android:exported="true">
119        </activity>
120        <activity
121            android:name=".PollingFrameEmulatorActivity"
122            android:label="Polling Frame Activity"
123            android:exported="true">
124        </activity>
125        <activity
126            android:name=".EventListenerEmulatorActivity"
127            android:label="Event Listener Activity"
128            android:exported="true">
129        </activity>
130        <service android:name="com.android.nfc.service.PollingLoopService" android:exported="true"
131            android:permission="android.permission.BIND_NFC_SERVICE"
132            android:enabled="true">
133            <intent-filter>
134                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
135                <category android:name="android.intent.category.DEFAULT"/>
136            </intent-filter>
137            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list"/>
138        </service>
139        <service android:name="com.android.nfc.service.PollingLoopService2" android:exported="true"
140            android:permission="android.permission.BIND_NFC_SERVICE"
141            android:enabled="true">
142            <intent-filter>
143                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
144                <category android:name="android.intent.category.DEFAULT"/>
145            </intent-filter>
146            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list_2"/>
147        </service>
148        <service android:name="com.android.nfc.service.AccessServiceTurnObserveModeOnProcessApdu" android:exported="true"
149            android:permission="android.permission.BIND_NFC_SERVICE"
150            android:enabled="false">
151            <intent-filter>
152                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
153                <category android:name="android.intent.category.DEFAULT"/>
154            </intent-filter>
155            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list"/>
156        </service>
157        <service android:name="com.android.nfc.service.TransportService1" android:exported="true"
158            android:permission="android.permission.BIND_NFC_SERVICE"
159            android:enabled="false">
160            <intent-filter>
161                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
162                <category android:name="android.intent.category.DEFAULT"/>
163            </intent-filter>
164            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_aid_list_1"/>
165        </service>
166        <service android:name="com.android.nfc.service.TransportService2" android:exported="true"
167            android:permission="android.permission.BIND_NFC_SERVICE"
168            android:enabled="false">
169            <intent-filter>
170                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
171                <category android:name="android.intent.category.DEFAULT"/>
172            </intent-filter>
173            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_aid_list_2"/>
174        </service>
175        <service android:name="com.android.nfc.service.AccessService" android:exported="true"
176            android:permission="android.permission.BIND_NFC_SERVICE"
177            android:enabled="false">
178            <intent-filter>
179                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
180                <category android:name="android.intent.category.DEFAULT"/>
181            </intent-filter>
182            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list"/>
183        </service>
184        <service android:name="com.android.nfc.service.PaymentService1" android:exported="true"
185            android:permission="android.permission.BIND_NFC_SERVICE"
186            android:enabled="false"
187            android:process="com.android.nfc.emulator.payment">
188            <intent-filter>
189                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
190                <category android:name="android.intent.category.DEFAULT"/>
191            </intent-filter>
192            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
193        </service>
194        <service android:name="com.android.nfc.service.PaymentServiceNoIndexReset" android:exported="true"
195            android:permission="android.permission.BIND_NFC_SERVICE"
196            android:enabled="false">
197            <intent-filter>
198                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
199                <category android:name="android.intent.category.DEFAULT"/>
200            </intent-filter>
201            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
202        </service>
203        <service android:name="com.android.nfc.service.OffHostService" android:exported="true"
204            android:permission="android.permission.BIND_NFC_SERVICE"
205            android:enabled="false">
206            <intent-filter>
207                <action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE"/>
208                <category android:name="android.intent.category.DEFAULT"/>
209            </intent-filter>
210            <meta-data android:name="android.nfc.cardemulation.off_host_apdu_service" android:resource="@xml/offhost_aid_list"/>
211        </service>
212        <service android:name="com.android.nfc.service.PaymentService2" android:exported="true"
213            android:permission="android.permission.BIND_NFC_SERVICE"
214            android:enabled="false">
215            <intent-filter>
216                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
217                <category android:name="android.intent.category.DEFAULT"/>
218            </intent-filter>
219            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_2"/>
220        </service>
221        <service android:name="com.android.nfc.service.PaymentServiceDynamicAids" android:exported="true"
222            android:permission="android.permission.BIND_NFC_SERVICE"
223            android:enabled="false">
224            <intent-filter>
225                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
226                <category android:name="android.intent.category.DEFAULT"/>
227            </intent-filter>
228            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
229        </service>
230        <service android:name="com.android.nfc.service.PrefixPaymentService1" android:exported="true"
231            android:permission="android.permission.BIND_NFC_SERVICE"
232            android:enabled="false">
233            <intent-filter>
234                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
235                <category android:name="android.intent.category.DEFAULT"/>
236            </intent-filter>
237            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_prefix_aid_list"/>
238        </service>
239        <service android:name="com.android.nfc.service.PrefixPaymentService2" android:exported="true"
240            android:permission="android.permission.BIND_NFC_SERVICE"
241            android:enabled="false">
242            <intent-filter>
243                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
244                <category android:name="android.intent.category.DEFAULT"/>
245            </intent-filter>
246            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_prefix_aid_list_2"/>
247        </service>
248        <service android:name="com.android.nfc.service.PrefixTransportService1" android:exported="true"
249            android:permission="android.permission.BIND_NFC_SERVICE"
250            android:enabled="false">
251            <intent-filter>
252                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
253                <category android:name="android.intent.category.DEFAULT"/>
254            </intent-filter>
255            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_prefix_aid_list_1"/>
256        </service>
257        <service android:name="com.android.nfc.service.PrefixTransportService2" android:exported="true"
258            android:permission="android.permission.BIND_NFC_SERVICE"
259            android:enabled="false">
260            <intent-filter>
261                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
262                <category android:name="android.intent.category.DEFAULT"/>
263            </intent-filter>
264            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_prefix_aid_list_2"/>
265        </service>
266        <service android:name="com.android.nfc.service.PrefixAccessService" android:exported="true"
267            android:permission="android.permission.BIND_NFC_SERVICE"
268            android:enabled="false">
269            <intent-filter>
270                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
271                <category android:name="android.intent.category.DEFAULT"/>
272            </intent-filter>
273            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_prefix_aid_list"/>
274        </service>
275        <service android:name="com.android.nfc.service.ThroughputService" android:exported="true"
276            android:permission="android.permission.BIND_NFC_SERVICE"
277            android:enabled="false">
278            <intent-filter>
279                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
280                <category android:name="android.intent.category.DEFAULT"/>
281            </intent-filter>
282            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/throughput_aid_list"/>
283        </service>
284        <service android:name="com.android.nfc.service.LargeNumAidsService" android:exported="true"
285            android:permission="android.permission.BIND_NFC_SERVICE"
286            android:enabled="false">
287            <intent-filter>
288                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
289                <category android:name="android.intent.category.DEFAULT"/>
290            </intent-filter>
291            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
292        </service>
293        <service android:name="com.android.nfc.service.ScreenOffPaymentService" android:exported="true"
294            android:permission="android.permission.BIND_NFC_SERVICE"
295            android:enabled="false">
296            <intent-filter>
297                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
298                <category android:name="android.intent.category.DEFAULT"/>
299            </intent-filter>
300            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/screen_off_payment_aid_list"/>
301        </service>
302        <service android:name="com.android.nfc.service.ScreenOnOnlyOffHostService" android:exported="true"
303            android:permission="android.permission.BIND_NFC_SERVICE"
304            android:enabled="false">
305            <intent-filter>
306                <action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE"/>
307                <category android:name="android.intent.category.DEFAULT"/>
308            </intent-filter>
309            <meta-data android:name="android.nfc.cardemulation.off_host_apdu_service" android:resource="@xml/screen_on_only_offhost_aid_list"/>
310        </service>
311    </application>
312    <instrumentation android:name="com.google.android.mobly.snippet.SnippetRunner"
313        android:targetPackage="com.android.nfc.emulator"
314        android:label="NFC Multi Device Emulator Snippet" />
315</manifest>
316