2016-04-04 26 views
1

Kullanıcı, Ana Bilgisayar Tabanlı Kart Emülasyonu (HCE) kullanarak bir NFC işlemi başlattığında her zaman uygulamamı başlatmam gerekiyor.HCE (Ana Bilgisayar Tabanlı Kart Emülasyonu) olayını dinle

Etkileşimi yönetmem gerekmiyor. Okuyucudan veya NFC emülatöründen herhangi bir veriye ihtiyacım yok. Hizmeti kullanan uygulamalarda kontrolüm yok. Telefonun bir NFC okuyucuya yakın olup olmadığını bilmem gerek.

Genel uygulamalar veya diğer uygulamalara müdahale etmeden bildirim dinlemek gibi kolay bir yol var mı?

cevap

1

Hayır, Android "hey, HCE üzerinden yeni etkinleştirilen bazı uygulamalar var" gibi bir bildirim göndermiyor. Böylece, uygulamanızda böyle bir etkinlik alamıyorsunuz. Ve özellikle, cihazınızdaki mevcut herhangi bir HCE uygulamasının (sizin kontrolünüzde olmayan) HCE ile etkinleştirilip etkinleştirilmediğini izlemek mümkün değildir.

Yapabilecekleriniz, kendi HCE hizmetinizi (özel uygulama AID'leriniz için kayıtlı) oluşturmaktır. Bu HCE hizmeti, daha sonra bir işlem alırsa bir aktivite başlatabilir (ayrıca bkz. How can I send message from HostApduService to an activity?):

public class MyHostApduService extends HostApduService { 
    @Override 
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) { 
     if ((apdu[1] == (byte)0xA4) && (apdu[2] == (byte)0x04)) { 
      // SELECT by AID 
      Intent intent = new Intent(this, MyActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 

      return new byte[]{ (byte)0x90, (byte)0x00 } 
     } else { 
      return new byte[]{ (byte)0x6D, (byte)0x00 } 
     } 
    } 
}