diff options
author | Guang Zhu <guangzhu@google.com> | 2015-09-13 18:43:56 -0700 |
---|---|---|
committer | Guang Zhu <guangzhu@google.com> | 2015-09-15 13:43:22 -0700 |
commit | fe74fb95b91a5d58a8d2d238c525e2f1891ca0c7 (patch) | |
tree | 7f3c4990982d81fc4d4dae0649d677a5002fd4a4 /cmds | |
parent | 276da47adf23b5512985268f36fab0b7d2d11363 (diff) | |
download | frameworks_base-fe74fb95b91a5d58a8d2d238c525e2f1891ca0c7.zip frameworks_base-fe74fb95b91a5d58a8d2d238c525e2f1891ca0c7.tar.gz frameworks_base-fe74fb95b91a5d58a8d2d238c525e2f1891ca0c7.tar.bz2 |
extend svc command to control NFC state
Change-Id: I599e4000fa17384089410e63b3150f25aa9458f7
Diffstat (limited to 'cmds')
-rw-r--r-- | cmds/svc/src/com/android/commands/svc/NfcCommand.java | 85 | ||||
-rw-r--r-- | cmds/svc/src/com/android/commands/svc/Svc.java | 3 |
2 files changed, 87 insertions, 1 deletions
diff --git a/cmds/svc/src/com/android/commands/svc/NfcCommand.java b/cmds/svc/src/com/android/commands/svc/NfcCommand.java new file mode 100644 index 0000000..e0f09ee --- /dev/null +++ b/cmds/svc/src/com/android/commands/svc/NfcCommand.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.commands.svc; + +import android.content.Context; +import android.content.pm.IPackageManager; +import android.content.pm.PackageManager; +import android.nfc.INfcAdapter; +import android.os.RemoteException; +import android.os.ServiceManager; + +public class NfcCommand extends Svc.Command { + + public NfcCommand() { + super("nfc"); + } + + @Override + public String shortHelp() { + return "Control NFC functions"; + } + + @Override + public String longHelp() { + return shortHelp() + "\n" + + "\n" + + "usage: svc nfc [enable|disable]\n" + + " Turn NFC on or off.\n\n"; + } + + @Override + public void run(String[] args) { + boolean validCommand = false; + if (args.length >= 2) { + boolean flag = false; + if ("enable".equals(args[1])) { + flag = true; + validCommand = true; + } else if ("disable".equals(args[1])) { + flag = false; + validCommand = true; + } + if (validCommand) { + IPackageManager pm = IPackageManager.Stub.asInterface( + ServiceManager.getService("package")); + try { + if (pm.hasSystemFeature(PackageManager.FEATURE_NFC)) { + INfcAdapter nfc = INfcAdapter.Stub + .asInterface(ServiceManager.getService(Context.NFC_SERVICE)); + try { + if (flag) { + nfc.enable(); + } else + nfc.disable(true); + } catch (RemoteException e) { + System.err.println("NFC operation failed: " + e); + } + } else { + System.err.println("NFC feature not supported."); + } + } catch (RemoteException e) { + System.err.println("RemoteException while calling PackageManager, is the " + + "system running?"); + } + return; + } + } + System.err.println(longHelp()); + } + +} diff --git a/cmds/svc/src/com/android/commands/svc/Svc.java b/cmds/svc/src/com/android/commands/svc/Svc.java index 0fbba11..2cccd1a 100644 --- a/cmds/svc/src/com/android/commands/svc/Svc.java +++ b/cmds/svc/src/com/android/commands/svc/Svc.java @@ -95,6 +95,7 @@ public class Svc { new PowerCommand(), new DataCommand(), new WifiCommand(), - new UsbCommand() + new UsbCommand(), + new NfcCommand(), }; } |