Android: Leyendo la etiqueta NFC en la clase de servicio

Estoy trabajando en una aplicación donde necesito leer los datos almacenados en la etiqueta NFC, por los datos que quiero decir es simple valores enteros como tal 0,1,2,3 y así. Las funciones para leer los datos de NFC funciona bien cuando está en la clase de actividad, pero tengo que ejecutar la aplicación en segundo plano, así que incluso cuando la aplicación no se está ejecutando en primer plano puedo leer los datos de la NFC. Así que escribí una clase de servicio y moví la función de la actividad a la clase de servicio. Pero no funcionó.

Este es el "MainActivity.java"

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startService(new Intent(this, MyService.class)); } 

StartService (nuevo Intent (esto, MyService.class));
Esta línea inicia la clase de servicio.

La clase de servicio es "MyService.java"

 public class MyService extends Service { private NfcAdapter mNfcAdapter; private PendingIntent mNfcPendingIntent; private IntentFilter[] mReadTagFilters; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); mNfcAdapter = NfcAdapter.getDefaultAdapter(this); mNfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP), 0); IntentFilter ndefDetected = new IntentFilter( NfcAdapter.ACTION_NDEF_DISCOVERED); ndefDetected.addDataScheme("http"); IntentFilter techDetected = new IntentFilter( NfcAdapter.ACTION_TECH_DISCOVERED); mReadTagFilters = new IntentFilter[] { ndefDetected, techDetected }; Log.v("service", "return from onCreate function"); } @Override public void onDestroy() { super.onDestroy(); } @Override @Deprecated public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Log.v("service", "onStart function"); if (mNfcAdapter != null) { if (!mNfcAdapter.isEnabled()) { new AlertDialog.Builder(this) .setTitle("NFC Dialog") .setMessage("Please switch on NFC") .setPositiveButton("Settings", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { Intent setnfc = new Intent( Settings.ACTION_WIRELESS_SETTINGS); startActivity(setnfc); } }) .setOnCancelListener( new DialogInterface.OnCancelListener() { public void onCancel(DialogInterface dialog) { dialog.dismiss(); } }).create().show(); } mNfcAdapter.enableForegroundDispatch (MainActivity.mContext, mNfcPendingIntent, mReadTagFilters, null); } else { Toast.makeText(this, "Sorry, NFC adapter not available on your device.", Toast.LENGTH_SHORT).show(); } Log.v("service", "return fonStart function"); } } 

En esto la función onCreate () está funcionando bien. El problema es esta línea:

  mNfcAdapter.enableForegroundDispatch (mContext, mNfcPendingIntent, mReadTagFilters, null); 

El primer argumento de la función acepta el contexto de una Actividad y aquí es donde estoy atrapado. ¿Hay alguna manera de resolver esto o cualquier otra alternativa. Gracias por tu ayuda.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.