From 790ea80fb7576efc7bc6d085a43cf0dc17f4db85 Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Wed, 25 May 2016 21:24:17 +0200 Subject: [PATCH] use HCE mode of Samsung Accessories for emulation --- ACardEmulator/app/app.iml | 6 +- ACardEmulator/app/build.gradle | 4 +- ACardEmulator/app/libs/accessory-v2.3.2.jar | Bin 0 -> 127520 bytes ACardEmulator/app/libs/sdk-v1.0.0.jar | Bin 0 -> 2008 bytes .../app/src/main/AndroidManifest.xml | 27 ++- .../EmulatorHostApduService.java | 65 ++++++ .../acardemulator/MainActivity.java | 18 +- .../acardemulator/SettingsActivity.java | 2 + .../SmartcardProviderService.java | 186 ++++++++++++++++++ .../EmulatorSingleton.java} | 90 +++------ .../acardemulator/emulators/JCEmulator.java | 7 +- .../app/src/main/res/values/strings.xml | 8 + .../src/main/res/xml/accessoryservices.xml | 51 +++++ .../app/src/main/res/xml/settings.xml | 7 + 14 files changed, 390 insertions(+), 81 deletions(-) create mode 100644 ACardEmulator/app/libs/accessory-v2.3.2.jar create mode 100644 ACardEmulator/app/libs/sdk-v1.0.0.jar create mode 100644 ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/EmulatorHostApduService.java create mode 100644 ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SmartcardProviderService.java rename ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/{EmulatorService.java => emulators/EmulatorSingleton.java} (64%) create mode 100644 ACardEmulator/app/src/main/res/xml/accessoryservices.xml diff --git a/ACardEmulator/app/app.iml b/ACardEmulator/app/app.iml index 37d5d64..abc25a2 100644 --- a/ACardEmulator/app/app.iml +++ b/ACardEmulator/app/app.iml @@ -90,9 +90,7 @@ - - @@ -108,14 +106,12 @@ - - @@ -127,8 +123,8 @@ - + diff --git a/ACardEmulator/app/build.gradle b/ACardEmulator/app/build.gradle index a1eb2b5..380911f 100644 --- a/ACardEmulator/app/build.gradle +++ b/ACardEmulator/app/build.gradle @@ -53,8 +53,8 @@ dependencies { compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:support-v4:23.0.1' compile 'com.android.support:design:23.2.1' - compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar' compile 'com.google.zxing:core:3.2.1' - compile group: 'com.madgag.spongycastle', name: 'core', version: '1.51.0.0' + compile 'com.madgag.spongycastle:core:1.51.0.0' + compile files('libs/sdk-v1.0.0.jar') } diff --git a/ACardEmulator/app/libs/accessory-v2.3.2.jar b/ACardEmulator/app/libs/accessory-v2.3.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..107a3f5b39ec45c72353a9190ca12f93c4b4a982 GIT binary patch literal 127520 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%0DXB$*QBkX1u5qjPcj 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 + + + + + + + - @@ -47,6 +54,24 @@ + + + + + + + + + + + + + + diff --git a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/EmulatorHostApduService.java b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/EmulatorHostApduService.java new file mode 100644 index 0000000..a0fe639 --- /dev/null +++ b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/EmulatorHostApduService.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2015 Frank Morgner + * + * This file is part of ACardEmulator. + * + * ACardEmulator is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * ACardEmulator is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * ACardEmulator. If not, see . + */ + +package com.vsmartcard.acardemulator; + +import android.content.Intent; +import android.nfc.cardemulation.HostApduService; +import android.os.Bundle; +import android.support.v4.content.LocalBroadcastManager; +import android.util.Log; + +import com.vsmartcard.acardemulator.emulators.EmulatorSingleton; + +public class EmulatorHostApduService extends HostApduService { + + @Override + public void onCreate() { + super.onCreate(); + EmulatorSingleton.createEmulator(this); + } + + @Override + public void onDestroy() { + super.onDestroy(); + } + + @Override + public byte[] processCommandApdu(byte[] capdu, Bundle extras) { + return EmulatorSingleton.process(this, capdu); + } + + @Override + public void onDeactivated(int reason) { + Intent i = new Intent(EmulatorSingleton.TAG); + + Log.d("", "End transaction"); + switch (reason) { + case DEACTIVATION_LINK_LOSS: + i.putExtra(EmulatorSingleton.EXTRA_DESELECT, "link lost"); + EmulatorSingleton.deactivate(); + break; + case DEACTIVATION_DESELECTED: + EmulatorSingleton.deactivate(); + break; + } + + LocalBroadcastManager.getInstance(this).sendBroadcast(i); + } +} diff --git a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/MainActivity.java b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/MainActivity.java index e151d6e..28f9789 100644 --- a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/MainActivity.java +++ b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/MainActivity.java @@ -41,6 +41,8 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; +import com.vsmartcard.acardemulator.emulators.EmulatorSingleton; + public class MainActivity extends AppCompatActivity { @@ -48,12 +50,12 @@ public class MainActivity extends AppCompatActivity { private BroadcastReceiver bReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(EmulatorService.TAG)) { - String capdu = intent.getStringExtra(EmulatorService.EXTRA_CAPDU); - String rapdu = intent.getStringExtra(EmulatorService.EXTRA_RAPDU); - String error = intent.getStringExtra(EmulatorService.EXTRA_ERROR); - String deselect = intent.getStringExtra(EmulatorService.EXTRA_DESELECT); - String install = intent.getStringExtra(EmulatorService.EXTRA_INSTALL); + if (intent.getAction().equals(EmulatorSingleton.TAG)) { + String capdu = intent.getStringExtra(EmulatorSingleton.EXTRA_CAPDU); + String rapdu = intent.getStringExtra(EmulatorSingleton.EXTRA_RAPDU); + String error = intent.getStringExtra(EmulatorSingleton.EXTRA_ERROR); + String deselect = intent.getStringExtra(EmulatorSingleton.EXTRA_DESELECT); + String install = intent.getStringExtra(EmulatorSingleton.EXTRA_INSTALL); if (install != null) textViewVPCDStatus.append(getResources().getString(R.string.status_install) + ":" + install + "\n"); if (capdu != null) @@ -102,7 +104,7 @@ public class MainActivity extends AppCompatActivity { if (emulator != getString(R.string.vicc)) { Snackbar.make(view, "Scheduled re-installation of all applets...", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); - EmulatorService.destroySimulator(getApplicationContext()); + EmulatorSingleton.destroyEmulator(); } } }); @@ -116,7 +118,7 @@ public class MainActivity extends AppCompatActivity { LocalBroadcastManager bManager = LocalBroadcastManager.getInstance(this); IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(EmulatorService.TAG); + intentFilter.addAction(EmulatorSingleton.TAG); bManager.registerReceiver(bReceiver, intentFilter); } diff --git a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SettingsActivity.java b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SettingsActivity.java index a108105..f7e7c94 100644 --- a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SettingsActivity.java +++ b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SettingsActivity.java @@ -200,6 +200,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity { return true; } }); + + bindPreferenceSummaryToValue(findPreference("nfc")); } @Override diff --git a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SmartcardProviderService.java b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SmartcardProviderService.java new file mode 100644 index 0000000..2f8d948 --- /dev/null +++ b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/SmartcardProviderService.java @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd. All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, are permitted provided that + * the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * Neither the name of Samsung Electronics Co., Ltd. nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +package com.vsmartcard.acardemulator; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.GregorianCalendar; + +import android.content.Intent; +import android.os.Binder; +import android.os.Handler; +import android.os.IBinder; +import android.widget.Toast; +import android.util.Log; + +import com.samsung.android.sdk.SsdkUnsupportedException; +import com.samsung.android.sdk.accessory.*; +import com.vsmartcard.acardemulator.emulators.EmulatorSingleton; + +public class SmartcardProviderService extends SAAgent { + private static final String TAG = "HelloAccessory(P)"; + private static final int HELLOACCESSORY_CHANNEL_ID = 104; + private static final Class SASOCKET_CLASS = ServiceConnection.class; + private final IBinder mBinder = new LocalBinder(); + private ServiceConnection mConnectionHandler = null; + Handler mHandler = new Handler(); + + public SmartcardProviderService() { + super(TAG, SASOCKET_CLASS); + } + + @Override + public void onCreate() { + super.onCreate(); + SA mAccessory = new SA(); + try { + mAccessory.initialize(this); + EmulatorSingleton.createEmulator(this); + } catch (SsdkUnsupportedException e) { + // try to handle SsdkUnsupportedException + if (processUnsupportedException(e) == true) { + EmulatorSingleton.createEmulator(this); + return; + } + } catch (Exception e1) { + e1.printStackTrace(); + /* + * Your application can not use Samsung Accessory SDK. Your application should work smoothly + * without using this SDK, or you may want to notify user and close your application gracefully + * (release resources, stop Service threads, close UI thread, etc.) + */ + stopSelf(); + } + } + + @Override + public IBinder onBind(Intent intent) { + return mBinder; + } + + @Override + protected void onFindPeerAgentsResponse(SAPeerAgent[] peerAgents, int result) { + Log.d(TAG, "onFindPeerAgentResponse : result =" + result); + } + + @Override + protected void onServiceConnectionRequested(SAPeerAgent peerAgent) { + if (peerAgent != null) { + Toast.makeText(getBaseContext(), "connection accepted", Toast.LENGTH_SHORT).show(); + acceptServiceConnectionRequest(peerAgent); + } + } + + @Override + protected void onServiceConnectionResponse(SAPeerAgent peerAgent, SASocket socket, int result) { + if (result == SAAgent.CONNECTION_SUCCESS) { + if (socket != null) { + mConnectionHandler = (ServiceConnection) socket; + } + } else if (result == SAAgent.CONNECTION_ALREADY_EXIST) { + Log.e(TAG, "onServiceConnectionResponse, CONNECTION_ALREADY_EXIST"); + } + } + + @Override + protected void onAuthenticationResponse(SAPeerAgent peerAgent, SAAuthenticationToken authToken, int error) { + /* + * The authenticatePeerAgent(peerAgent) API may not be working properly depending on the firmware + * version of accessory device. Please refer to another sample application for Security. + */ + } + + @Override + protected void onError(SAPeerAgent peerAgent, String errorMessage, int errorCode) { + super.onError(peerAgent, errorMessage, errorCode); + } + + private boolean processUnsupportedException(SsdkUnsupportedException e) { + e.printStackTrace(); + int errType = e.getType(); + if (errType == SsdkUnsupportedException.VENDOR_NOT_SUPPORTED + || errType == SsdkUnsupportedException.DEVICE_NOT_SUPPORTED) { + /* + * Your application can not use Samsung Accessory SDK. You application should work smoothly + * without using this SDK, or you may want to notify user and close your app gracefully (release + * resources, stop Service threads, close UI thread, etc.) + */ + stopSelf(); + } else if (errType == SsdkUnsupportedException.LIBRARY_NOT_INSTALLED) { + Log.e(TAG, "You need to install Samsung Accessory SDK to use this application."); + } else if (errType == SsdkUnsupportedException.LIBRARY_UPDATE_IS_REQUIRED) { + Log.e(TAG, "You need to update Samsung Accessory SDK to use this application."); + } else if (errType == SsdkUnsupportedException.LIBRARY_UPDATE_IS_RECOMMENDED) { + Log.e(TAG, "We recommend that you update your Samsung Accessory SDK before using this application."); + return false; + } + return true; + } + + public class LocalBinder extends Binder { + public SmartcardProviderService getService() { + return SmartcardProviderService.this; + } + } + + public class ServiceConnection extends SASocket { + public ServiceConnection() { + super(ServiceConnection.class.getName()); + } + + @Override + public void onError(int channelId, String errorMessage, int errorCode) { + } + + @Override + public void onReceive(int channelId, byte[] data) { + if (mConnectionHandler == null) { + return; + } + final byte[] response = EmulatorSingleton.process(getApplicationContext(), data); + new Thread(new Runnable() { + public void run() { + try { + mConnectionHandler.send(HELLOACCESSORY_CHANNEL_ID, response); + } catch (IOException e) { + e.printStackTrace(); + } + } + }).start(); + } + + @Override + protected void onServiceConnectionLost(int reason) { + mConnectionHandler = null; + EmulatorSingleton.deactivate(); + mHandler.post(new Runnable() { + @Override + public void run() { + Toast.makeText(getBaseContext(), "connection lost", Toast.LENGTH_SHORT).show(); + } + }); + } + } +} diff --git a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/EmulatorService.java b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/emulators/EmulatorSingleton.java similarity index 64% rename from ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/EmulatorService.java rename to ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/emulators/EmulatorSingleton.java index d462bb0..b8b725f 100644 --- a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/EmulatorService.java +++ b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/emulators/EmulatorSingleton.java @@ -17,28 +17,19 @@ * ACardEmulator. If not, see . */ -package com.vsmartcard.acardemulator; +package com.vsmartcard.acardemulator.emulators; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.nfc.cardemulation.HostApduService; -import android.os.Bundle; -import android.os.StrictMode; import android.preference.PreferenceManager; import android.support.v4.content.LocalBroadcastManager; import android.util.Log; -import java.io.IOException; -import java.net.InetAddress; -import java.net.Socket; - -import com.vsmartcard.acardemulator.emulators.Emulator; -import com.vsmartcard.acardemulator.emulators.JCEmulator; -import com.vsmartcard.acardemulator.emulators.VICCEmulator; - -public class EmulatorService extends HostApduService { +import com.vsmartcard.acardemulator.R; +import com.vsmartcard.acardemulator.Util; +public class EmulatorSingleton { public static final String TAG = "com.vsmartcard.acardemulator.EmulatorService"; public static final String EXTRA_CAPDU = "MSG_CAPDU"; public static final String EXTRA_RAPDU = "MSG_RAPDU"; @@ -49,22 +40,35 @@ public class EmulatorService extends HostApduService { private static Emulator emulator = null; private static boolean do_destroy = false; - @Override - public void onCreate () { - super.onCreate(); + private static void destroyEmulatorIfRequested(Context context) { + if (do_destroy) { + emulator.destroy(); + emulator = null; + do_destroy = false; + Intent i = new Intent(TAG); + i.putExtra(EXTRA_DESELECT, "Uninstalled all applets."); + LocalBroadcastManager.getInstance(context).sendBroadcast(i); + } + } + + public static void destroyEmulator() { + do_destroy = true; + } + + public static void createEmulator(Context context) { // force reloading applets if requested - do_destroy(); + destroyEmulatorIfRequested(context); if (emulator == null) { Log.d("", "Begin transaction"); - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(context); String str_emulator = SP.getString("emulator", ""); - if (str_emulator.equals(getString(R.string.vicc))) { + if (str_emulator.equals(context.getString(R.string.vicc))) { emulator = new VICCEmulator( SP.getString("hostname", VICCEmulator.DEFAULT_HOSTNAME), Integer.parseInt(SP.getString("port", Integer.toString(VICCEmulator.DEFAULT_PORT)))); } else { - emulator = new JCEmulator(this, + emulator = new JCEmulator(context, SP.getBoolean("activate_helloworld", false), SP.getBoolean("activate_openpgp", false), SP.getBoolean("activate_oath", false), @@ -74,55 +78,19 @@ public class EmulatorService extends HostApduService { } } - public static void destroySimulator(Context context) { - do_destroy = true; - } - - private void do_destroy() { - if (do_destroy) { - emulator.destroy(); - emulator = null; - do_destroy = false; - Intent i = new Intent(TAG); - i.putExtra(EXTRA_DESELECT, "Uninstalled all applets."); - LocalBroadcastManager.getInstance(this).sendBroadcast(i); - } - } - - @Override - public void onDestroy() { - do_destroy(); - super.onDestroy(); - } - - @Override - public byte[] processCommandApdu(byte[] capdu, Bundle extras) { + public static byte[] process(Context context, byte[] capdu) { byte[] rapdu = emulator.process(capdu); Intent i = new Intent(TAG); i.putExtra(EXTRA_CAPDU, Util.byteArrayToHexString(capdu)); if (rapdu != null) i.putExtra(EXTRA_RAPDU, Util.byteArrayToHexString(rapdu)); - LocalBroadcastManager.getInstance(this).sendBroadcast(i); + LocalBroadcastManager.getInstance(context).sendBroadcast(i); return rapdu; } - @Override - public void onDeactivated(int reason) { - Intent i = new Intent(TAG); - - Log.d("", "End transaction"); - switch (reason) { - case DEACTIVATION_LINK_LOSS: - i.putExtra(EXTRA_DESELECT, "link lost"); - emulator.deactivate(); - break; - case DEACTIVATION_DESELECTED: - emulator.deactivate(); - break; - } - - LocalBroadcastManager.getInstance(this).sendBroadcast(i); + public static void deactivate() { + emulator.deactivate(); } -} +} \ No newline at end of file diff --git a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/emulators/JCEmulator.java b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/emulators/JCEmulator.java index 99470d4..1ff6967 100644 --- a/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/emulators/JCEmulator.java +++ b/ACardEmulator/app/src/main/java/com/vsmartcard/acardemulator/emulators/JCEmulator.java @@ -9,7 +9,6 @@ import com.licel.jcardsim.base.SimulatorRuntime; import com.licel.jcardsim.samples.HelloWorldApplet; import com.licel.jcardsim.utils.AIDUtil; import com.mysmartlogon.gidsApplet.GidsApplet; -import com.vsmartcard.acardemulator.EmulatorService; import com.vsmartcard.acardemulator.R; import com.vsmartcard.acardemulator.Util; @@ -100,11 +99,11 @@ public class JCEmulator implements Emulator { } } - Intent i = new Intent(EmulatorService.TAG); + Intent i = new Intent(EmulatorSingleton.TAG); if (!extra_error.isEmpty()) - i.putExtra(EmulatorService.EXTRA_ERROR, extra_error); + i.putExtra(EmulatorSingleton.EXTRA_ERROR, extra_error); if (!extra_install.isEmpty()) - i.putExtra(EmulatorService.EXTRA_INSTALL, extra_install); + i.putExtra(EmulatorSingleton.EXTRA_INSTALL, extra_install); LocalBroadcastManager.getInstance(context).sendBroadcast(i); } diff --git a/ACardEmulator/app/src/main/res/values/strings.xml b/ACardEmulator/app/src/main/res/values/strings.xml index 159204f..6d3d63a 100644 --- a/ACardEmulator/app/src/main/res/values/strings.xml +++ b/ACardEmulator/app/src/main/res/values/strings.xml @@ -44,6 +44,14 @@ Builtin Java Card Simulator Remote Virtual Smart Card + + + @string/nfc + @string/gear + + Builtin NFC + Samsung Accessory + If you choose the virtual smart card (VICC) as emulator, you need to start the it on your computer with the `--reversed` flag and configure the connection parameters here accordingly. VICC Port VICC Hostname diff --git a/ACardEmulator/app/src/main/res/xml/accessoryservices.xml b/ACardEmulator/app/src/main/res/xml/accessoryservices.xml new file mode 100644 index 0000000..746d229 --- /dev/null +++ b/ACardEmulator/app/src/main/res/xml/accessoryservices.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + ]> + + + + + + + + + + + + + \ No newline at end of file diff --git a/ACardEmulator/app/src/main/res/xml/settings.xml b/ACardEmulator/app/src/main/res/xml/settings.xml index ed95cc3..17148a2 100644 --- a/ACardEmulator/app/src/main/res/xml/settings.xml +++ b/ACardEmulator/app/src/main/res/xml/settings.xml @@ -81,4 +81,11 @@ + + \ No newline at end of file