сделать активность NFC приватной без android: exported = false

1

У меня есть активность NFC, которая определяет фильтр намерения и данные. Это что-то вроде

        <intent-filter>
            <action android:name="android.nfc.action..." />
            <category android:name="android.intent.category.DEFAULT" />

            <data
                android:host="..."
                android:path="..." />
        </intent-filter>

Теперь проблема заключается в том, что, поскольку я не включил android: exported = "false". это делает эту активность восприимчивой к вредоносной атаке со стороны приложений, поскольку деятельность теперь доступна для публики. Проблема здесь в том, что если я поместил экспортированный атрибут как false, я не смогу получить вызов активности из внешнего намерения (которое должно запускать действие через onNewIntent())

Есть ли способ сделать операцию "безопасной", не затрагивая ее общий механизм запуска, т.е. Посредством внешнего намерения?

Теги:
android-activity
nfc
intentfilter

1 ответ

1

Если вам нужно получать уведомления о тегах, вам нужен фильтр намерений. Диспетчер тегов использует это, чтобы найти интересующие действия, которые следует учитывать при проверке тега. Если вы сделаете свою деятельность частной, то вы не сможете ее уведомить, как вы видели. Какие "злонамеренные атаки" вас беспокоят? Ваша деятельность настолько же безопасна, насколько вы ее кодируете: если вы будете обрабатывать только NFC, вы будете "безопасны" (если, конечно, полезная нагрузка NFC не запускает код очистки устройства или что-то еще...)

  • 0
    поэтому, чтобы быть немного более понятным, если я хочу, чтобы внешнее событие (или намерение) вызвало мою активность (например, какое-то поле NFC), у меня не может быть активности private.right?
  • 0
    Правильно. Лучшее, что вы могли бы сделать, это потребовать некоторые пользовательские разрешения, но это не сработает для NFC, так как вы не можете изменить ОС.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню