Как определить, являются ли Samsung Pay или Google Pay платежными приложениями по умолчанию?

Я ищу способ понять, использует ли пользователь Samsung Pay или Google Pay в качестве платежного приложения по умолчанию.

Читая документацию Tap and Pay, вы можете использовать

override suspend fun isDefaultWallet(packageName: String, fullClassName: String): Boolean {
        val nfcManager = context.getSystemService(Context.NFC_SERVICE) as NfcManager
        val emulation = CardEmulation.getInstance(nfcManager.defaultAdapter)
        val componentName = ComponentName(packageName, fullClassName)
        return emulation.isDefaultServiceForCategory(componentName, CardEmulation.CATEGORY_PAYMENT)
}

Для Google Pay:

  • имя пакета: com.google.android.apps.walletnfcrel
  • название класса: com.google.android.gms.tapandpay.hce.service.TpHceService

Каковы значения Samsung Pay?

2 ответа

Для Samsung Pay:

  • имя пакета: com.samsung.android.spayfw
  • название класса: com.samsung.android.spayfw.core.hce.SPayHCEService

Попробуйте это, это сработало для меня:

      @RequiresApi(api = Build.VERSION_CODES.R)
private boolean isGoogleWalletDefaultPaymentMethod(){
    NfcManager manager = (NfcManager) this.getSystemService(Context.NFC_SERVICE);
    CardEmulation cardEmulation = CardEmulation.getInstance(manager.getDefaultAdapter());
    if (cardEmulation.getDescriptionForPreferredPaymentService().equals("Google Pay"))
        return true;
    else
        return false;
}

Плюс, если вы хотите узнать название пакета Samsung pay, это: com.samsung.android.spay

Другие вопросы по тегам