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

Commit b5c4e80e authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Simplify NfcCommand and avoid NullPointerExceptions"

parents 7d136b77 d3375090
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());
    }