Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3375090 authored by Myles Watson's avatar Myles Watson
Browse files

Simplify NfcCommand and avoid NullPointerExceptions

Test: adb root
      adb shell
      stop
      svc nfc enable
      start
      svc nfc disable

Change-Id: Ie5170f0525f8830d1d80b5607191ce95e78a55ae
parent 3890689b
Loading
Loading
Loading
Loading
+18 −35
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@
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;
@@ -44,42 +42,27 @@ public class NfcCommand extends Svc.Command {

    @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;
        INfcAdapter adapter = INfcAdapter.Stub.asInterface(
                ServiceManager.getService(Context.NFC_SERVICE));

        if (adapter == null) {
            System.err.println("Got a null NfcAdapter, is the system running?");
            return;
        }
            if (validCommand) {
                IPackageManager pm = IPackageManager.Stub.asInterface(
                        ServiceManager.getService("package"));
                try {
                    if (pm.hasSystemFeature(PackageManager.FEATURE_NFC, 0) ||
			pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION, 0)) {
                        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.");
            if (args.length == 2 && "enable".equals(args[1])) {
                adapter.enable();
                return;
            } else if (args.length == 2 && "disable".equals(args[1])) {
                adapter.disable(true);
                return;
            }
        } catch (RemoteException e) {
                    System.err.println("RemoteException while calling PackageManager, is the "
                            + "system running?");
                }
            System.err.println("NFC operation failed: " + e);
            return;
        }
        }

        System.err.println(longHelp());
    }