net.networksaremadeofstring.rhybudd.PushSettingsFragment.java Source code

Java tutorial

Introduction

Here is the source code for net.networksaremadeofstring.rhybudd.PushSettingsFragment.java

Source

/*
 * Copyright (C) 2013 - Gareth Llewellyn
 *
 * This file is part of Rhybudd - http://blog.NetworksAreMadeOfString.co.uk/Rhybudd/
 *
 * This program 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.
 *
 * This program 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
 * this program. If not, see <http://www.gnu.org/licenses/>
 */
package net.networksaremadeofstring.rhybudd;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.NfcEvent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.*;
import com.bugsense.trace.BugSenseHandler;
import com.google.android.gcm.GCMRegistrar;

import static android.nfc.NdefRecord.createMime;

public class PushSettingsFragment extends Fragment implements NfcAdapter.CreateNdefMessageCallback {
    private static final int MENU_UNDO = 238768;

    public PushSettingsFragment() {
    }

    EditText FilterKey;
    TextView PushKeyDesc;
    //Button SaveKey;
    Handler getIDhandler, checkZPHandler;
    ProgressBar progressbar;
    AlertDialog alertDialog;
    Switch enabledSwitch;
    Button registerWithZenPack, checkZenPack, exitButton;
    ImageView ZPInstalledImg;
    ImageView ZPDeviceRegistered;
    TextView ZPVersion;
    String regId = "";
    Boolean checkZPImmediately = true;
    ZenossAPI API = null;
    NfcAdapter mNfcAdapter;
    Boolean pushEnabled = false;
    String pushKey = "";
    String senderID = "";
    boolean hasZenPack = false;
    ZenPack zp = new ZenPack();
    String prevFilterKey = "";
    Menu menu = null;
    MenuItem undoMenuItem = null;

    @Override
    public void onResume() {
        super.onResume();

        try {
            if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getActivity().getIntent().getAction())) {
                processIntent(getActivity().getIntent());
            }
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onResume", e);
        }
    }

    @Override
    public void onCreateOptionsMenu(Menu m, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);

        /*if(null == menu)
        menu = m;*/
    }

    void processIntent(Intent intent) {
        //Log.e("processIntent","processIntent");
        try {
            Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
            // only one message sent during the beam
            NdefMessage msg = (NdefMessage) rawMsgs[0];

            //Backup our current key
            prevFilterKey = FilterKey.getText().toString();

            // record 0 contains the MIME type, record 1 is the AAR, if present
            FilterKey.setText(new String(msg.getRecords()[0].getPayload()));

            /*Message message = Message.obtain();
            Bundle bundle = new Bundle();
            bundle.putString("newfilterkey",new String(msg.getRecords()[0].getPayload()));
            message.setData(bundle);
            message.what = RhybuddHandlers.msg_push_show_undo;
            checkZPHandler.sendMessageDelayed(message,600);*/

        } catch (Exception e) {
            e.printStackTrace();
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "processIntent", e);
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case MENU_UNDO: {
            try {
                //Log.e("onOptionsItemSelected","Removing");
                FilterKey.setText(prevFilterKey);
                menu.removeItem(MENU_UNDO);
                return true;
            } catch (Exception e) {
                BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "MENU_UNDO", e);
                return false;
            }
        }

        default:
            return false;
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_push_config, container, false);

        progressbar = (ProgressBar) rootView.findViewById(R.id.progressBar);
        pushKey = PreferenceManager.getDefaultSharedPreferences(getActivity())
                .getString(ZenossAPI.PREFERENCE_PUSHKEY, "");
        pushEnabled = PreferenceManager.getDefaultSharedPreferences(getActivity())
                .getBoolean(ZenossAPI.PREFERENCE_PUSH_ENABLED, false);
        senderID = PreferenceManager.getDefaultSharedPreferences(getActivity())
                .getString(ZenossAPI.PREFERENCE_PUSH_SENDERID, "");

        FilterKey = (EditText) rootView.findViewById(R.id.pushFilterEditText);
        enabledSwitch = (Switch) rootView.findViewById(R.id.PushEnabledSwitch);
        registerWithZenPack = (Button) rootView.findViewById(R.id.RegisterButton);
        checkZenPack = (Button) rootView.findViewById(R.id.CheckButton);
        exitButton = (Button) rootView.findViewById(R.id.ExitButton);

        ZPInstalledImg = (ImageView) rootView.findViewById(R.id.ZPInstalledStatusImg);
        ZPDeviceRegistered = (ImageView) rootView.findViewById(R.id.ZPDevRegStatusImg);
        ZPVersion = (TextView) rootView.findViewById(R.id.ZenPackVersion);

        //Log.e("pushKey",pushKey);

        //Set the filter
        try {
            if (!pushKey.equals("")) {
                FilterKey.setText(pushKey);
            }
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onCreateView", e);
        }

        try {
            if (checkZPImmediately) {
                checkZenPack.setVisibility(View.GONE);
                exitButton.setVisibility(View.GONE);
                registerWithZenPack.setVisibility(View.VISIBLE);
            } else {
                checkZenPack.setVisibility(View.VISIBLE);
                exitButton.setVisibility(View.VISIBLE);
                registerWithZenPack.setVisibility(View.GONE);
            }
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onCreateView", e);
        }

        //Set the enabled setting
        try {
            enabledSwitch.setChecked(pushEnabled);

            enabledSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                    SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getActivity())
                            .edit();
                    editor.putBoolean(ZenossAPI.PREFERENCE_PUSH_ENABLED, b);
                    editor.commit();

                    if (b) {
                        RegisterWithZenPack();
                    } else {
                        checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_not_registered);
                        GCMRegistrar.unregister(getActivity());
                    }
                }
            });
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onCreateView", e);
        }

        try {
            exitButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    if (PreferenceManager.getDefaultSharedPreferences(getActivity())
                            .getString(ZenossAPI.PREFERENCE_URL, "").equals("")) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                        builder.setMessage(
                                "Rhybudd needs details such as the URL and credentials in order to interact with Zenoss")
                                .setTitle("Zenoss Credentials Needed").setCancelable(false)
                                .setPositiveButton("Configure Zenoss Core", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        ((FirstRunSettings) getActivity()).setPushTab(0);
                                        alertDialog.cancel();
                                    }
                                }).setNeutralButton("Configure ZaaS", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        ((FirstRunSettings) getActivity()).setPushTab(1);
                                        alertDialog.cancel();
                                    }
                                }).setNegativeButton("Exit", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        Intent in = new Intent();
                                        getActivity().setResult(2, in);
                                        getActivity().finish();
                                    }
                                });
                        alertDialog = builder.create();
                        alertDialog.show();
                    } else {
                        /*progressbar.setVisibility(View.VISIBLE);
                            
                        //if(PushKey.getText().length() == 32)
                        // {
                        SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getActivity()).edit();
                        editor.putString(ZenossAPI.PREFERENCE_PUSHKEY, PushKey.getText().toString());
                        editor.commit();
                            
                        progressbar.setVisibility(View.GONE);*/

                        Intent in = new Intent();
                        in.putExtra("forceRefresh", true);
                        //in.putExtra(ZenossAPI.PREFERENCE_PUSHKEY,PushKey.getText().toString());
                        getActivity().setResult(1, in);
                        getActivity().finish();
                    }
                }
            });
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onCreateView", e);
        }

        try {
            checkZenPack.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    checkZP();
                }
            });
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onCreateView", e);
        }

        try {
            registerWithZenPack.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    if (hasZenPack) {
                        RegisterWithZenPack();
                    } else {
                        Toast.makeText(getActivity(), getString(R.string.PushZPErrorNoZP), Toast.LENGTH_LONG)
                                .show();
                    }
                }
            });
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onCreateView", e);
        }

        /*Button getID = (Button) rootView.findViewById(R.id.GenerateNewIDButton);
        getID.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            //SaveKey.setVisibility(View.GONE);
            PushKey.setText("");
            progressbar.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
            progressbar.setVisibility(View.VISIBLE);
            
            ((Thread) new Thread(){
                public void run()
                {
                    try
                    {
                        String PushKey = ZenossAPI.getPushKey();
                        if(null != PushKey)
                        {
                            Message msg = new Message();
                            Bundle bundle = new Bundle();
            
                            msg.what = RhybuddHandlers.msg_generic_success;
                            bundle.putString(ZenossAPIv2.PREFERENCE_PUSHKEY, PushKey);
                            msg.setData(bundle);
                            Message.obtain();
                            getIDhandler.sendMessage(msg);
                        }
                        else
                        {
                            getIDhandler.sendEmptyMessage(RhybuddHandlers.msg_generic_failure);
                        }
            
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "GetKey", e);
                        getIDhandler.sendEmptyMessage(RhybuddHandlers.msg_generic_http_transport_error);
                    }
                    catch (JSONException e)
                    {
                        e.printStackTrace();
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "GetKey", e);
                        getIDhandler.sendEmptyMessage(RhybuddHandlers.msg_json_error);
                    }
                }
            }).start();
        }
        });*/

        return rootView;
    }

    @Override
    public void onPause() {
        super.onPause();

        try {
            SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getActivity()).edit();
            editor.putString(ZenossAPI.PREFERENCE_PUSHKEY, FilterKey.getText().toString());
            editor.commit();
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "onPause", e);
        }
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        if (checkZPImmediately) {
            //Log.i("PushSettings","Checking ZenPack immediately");
            checkZP();
        } else {
            //Log.i("PushSettings","Waiting for a button press to check ZenPack");
        }
    }

    private void RegisterWithZenPack() {
        try {
            progressbar.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
            progressbar.setVisibility(View.VISIBLE);
        } catch (NullPointerException NPE) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "RegisterWithZenPack", NPE);
        }

        (new Thread() {
            public void run() {
                try {
                    if (null == API) {
                        if (PreferenceManager.getDefaultSharedPreferences(getActivity())
                                .getBoolean(ZenossAPI.PREFERENCE_IS_ZAAS, false)) {
                            API = new ZenossAPIZaas();
                        } else {
                            API = new ZenossAPICore();
                        }

                        ZenossCredentials credentials = new ZenossCredentials(getActivity());

                        API.Login(credentials);
                    }

                    GCMRegistrar.checkDevice(getActivity());
                    GCMRegistrar.checkManifest(getActivity());
                    regId = GCMRegistrar.getRegistrationId(getActivity());

                    if (regId.equals("")) {
                        int i = 10;

                        GCMRegistrar.register(getActivity(), zp.SenderID);

                        //I *really* want that regid
                        while (regId.equals("") || i > 0) {
                            //Log.i("pushsettings","sleeping");
                            regId = GCMRegistrar.getRegistrationId(getActivity());
                            i--;
                            sleep(500);
                        }
                    }

                    if (regId.equals("")) {
                        checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_not_registered);
                    } else {
                        if (API.RegisterWithZenPack(ZenossAPI.md5(Settings.Secure
                                .getString(getActivity().getContentResolver(), Settings.Secure.ANDROID_ID)),
                                regId)) {
                            checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_registered);
                        } else {
                            checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_not_registered);
                        }
                    }
                } catch (Exception e) {
                    //firstLoadHandler.sendEmptyMessage(0);
                    BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "RegisterWithZenPack", e);
                    checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_not_registered);
                }
            }
        }).start();
    }

    private void checkZP() {
        //Log.i("PushSettings","Checking for ZenPack!");
        try {
            progressbar.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
            progressbar.setVisibility(View.VISIBLE);
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "checkZP", e);
        }

        (new Thread() {
            public void run() {
                try {
                    if (PreferenceManager.getDefaultSharedPreferences(getActivity())
                            .getBoolean(ZenossAPI.PREFERENCE_IS_ZAAS, false)) {
                        API = new ZenossAPIZaas();
                    } else {
                        API = new ZenossAPICore();
                    }

                    ZenossCredentials credentials = new ZenossCredentials(getActivity());
                    API.Login(credentials);
                    zp = API.CheckZenPack();

                    if (null != zp && zp.Installed) {
                        //Log.e("ZP", zp.SenderID);

                        SharedPreferences.Editor editor = PreferenceManager
                                .getDefaultSharedPreferences(getActivity()).edit();
                        editor.putString(ZenossAPI.PREFERENCE_PUSH_SENDERID, zp.SenderID);
                        editor.commit();

                        checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_is_installed);

                        //Moved to the handler above
                        /*if(checkZPImmediately)
                        RegisterWithZenPack();*/
                    } else {
                        checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_not_installed);
                    }

                } catch (IllegalStateException i) {
                    checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_generic_http_transport_error);
                    checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_not_installed);
                } catch (Exception e) {
                    e.printStackTrace();
                    checkZPHandler.sendEmptyMessage(RhybuddHandlers.msg_zp_not_installed);
                }
            }
        }).start();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Log.e("onCreate","onCreate");
        setHasOptionsMenu(true);
        if (null != getArguments() && getArguments().containsKey("checkZPImmediately"))
            checkZPImmediately = getArguments().getBoolean("checkZPImmediately");

        // Check for available NFC Adapter
        mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());

        if (null != mNfcAdapter) {
            // Register callback
            mNfcAdapter.setNdefPushMessageCallback(this, getActivity());
        }

        checkZPHandler = new Handler() {
            public void handleMessage(Message msg) {
                try {
                    if (null != progressbar) {
                        progressbar.startAnimation(
                                AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_out));
                        progressbar.setVisibility(View.GONE);
                    }
                } catch (NullPointerException npe) {
                    npe.printStackTrace();
                } catch (Exception e) {
                    BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "checkZPHandler", e);
                }

                switch (msg.what) {
                /*case RhybuddHandlers.msg_push_show_undo:
                {
                    FilterKey.setText(msg.getData().getString("newfilterkey"));
                    try
                    {
                        if(null == undoMenuItem)
                        {
                            menu.add(Menu.NONE,MENU_UNDO,Menu.NONE,"Undo");
                            undoMenuItem = menu.findItem(MENU_UNDO);
                            undoMenuItem.setIcon(R.drawable.ic_action_content_undo);
                            undoMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
                        }
                    
                        getActivity().invalidateOptionsMenu();
                    }
                    catch(Exception e)
                    {
                        e.printStackTrace();
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment","processIntent",e);
                    }
                }
                break;*/

                case RhybuddHandlers.msg_generic_http_transport_error: {
                    try {
                        Toast.makeText(getActivity(), getActivity().getString(R.string.PushZPNoHost),
                                Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment",
                                "checkZPHandler msg_generic_http_transport_error", e);
                    }
                }
                    break;

                case RhybuddHandlers.msg_zp_is_installed: {
                    try {
                        hasZenPack = true;
                        ZPInstalledImg.setImageResource(R.drawable.ic_acknowledged);
                        ZPDeviceRegistered.setImageResource(R.drawable.ic_unacknowledged);
                        ZPVersion.setText("1.0.1");
                        enabledSwitch.setEnabled(hasZenPack);
                        registerWithZenPack.setEnabled(hasZenPack);

                        if (checkZPImmediately) {
                            RegisterWithZenPack();
                        } else {
                            checkZenPack.setVisibility(View.VISIBLE);
                            registerWithZenPack.setVisibility(View.GONE);
                        }
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment",
                                "checkZPHandler msg_zp_is_installed", e);
                    }
                }
                    break;

                case RhybuddHandlers.msg_zp_not_installed: {
                    try {
                        hasZenPack = false;
                        ZPInstalledImg.setImageResource(R.drawable.ic_unacknowledged);
                        ZPDeviceRegistered.setImageResource(R.drawable.ic_unacknowledged);
                        ZPVersion.setText("----");
                        enabledSwitch.setEnabled(hasZenPack);
                        registerWithZenPack.setEnabled(hasZenPack);
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment",
                                "checkZPHandler msg_zp_not_installed", e);
                    }
                }
                    break;

                case RhybuddHandlers.msg_zp_registered: {
                    try {
                        ZPDeviceRegistered.setImageResource(R.drawable.ic_acknowledged);
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment",
                                "checkZPHandler msg_zp_registered", e);
                    }
                }
                    break;

                case RhybuddHandlers.msg_zp_not_registered: {
                    try {
                        ZPDeviceRegistered.setImageResource(R.drawable.ic_unacknowledged);
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment",
                                "checkZPHandler msg_zp_not_registered", e);
                    }
                }
                    break;
                }
            }
        };

        getIDhandler = new Handler() {
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case RhybuddHandlers.msg_generic_success: {
                    try {
                        String pushKey = msg.getData().getString(ZenossAPI.PREFERENCE_PUSHKEY);

                        progressbar.setVisibility(View.GONE);
                        //PushKey.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
                        //PushKey.setVisibility(View.VISIBLE);
                        PushKeyDesc.startAnimation(
                                AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
                        PushKeyDesc.setVisibility(View.VISIBLE);
                        //PushKey.setText(pushKey);

                        SharedPreferences.Editor editor = PreferenceManager
                                .getDefaultSharedPreferences(getActivity()).edit();
                        editor.putString(ZenossAPI.PREFERENCE_PUSHKEY, pushKey);
                        editor.commit();
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment",
                                "getIDhandler msg_generic_success", e);
                    }
                }
                    break;

                case RhybuddHandlers.msg_json_error: {
                    try {
                        progressbar.setVisibility(View.GONE);
                        Toast.makeText(getActivity(), getString(R.string.JSONExceptionMessage), Toast.LENGTH_LONG)
                                .show();
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "getIDhandler msg_json_error",
                                e);
                    }
                }
                    break;

                case RhybuddHandlers.msg_generic_http_transport_error: {
                    try {
                        progressbar.setVisibility(View.GONE);
                        Toast.makeText(getActivity(), getString(R.string.HttpTransportExceptionMessage),
                                Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "getIDhandler msg_json_error",
                                e);
                    }
                }
                    break;

                case RhybuddHandlers.msg_generic_failure: {
                    try {
                        progressbar.setVisibility(View.GONE);
                        Toast.makeText(getActivity(), getString(R.string.GenericExceptionMessage),
                                Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        BugSenseHandler.sendExceptionMessage("PushSettingsFragment",
                                "getIDhandler msg_generic_failure", e);
                    }
                }
                    break;
                }
            }
        };
    }

    @Override
    public NdefMessage createNdefMessage(NfcEvent nfcEvent) {
        try {
            NdefMessage msg = new NdefMessage(
                    new NdefRecord[] { createMime("application/vnd.net.networksaremadeofstring.rhybudd.push",
                            FilterKey.getText().toString().getBytes())
                    //,NdefRecord.createApplicationRecord("com.example.android.beam")
                    });
            return msg;
        } catch (Exception e) {
            BugSenseHandler.sendExceptionMessage("PushSettingsFragment", "createNdefMessage", e);
            return null;
        }
    }
}