2011-06-20 11 views
9

Muszę ukryć lub pokazać ikonę mojej aplikacji w programie uruchamiającym, w zależności od pewnych informacji o środowisku wykonawczym. Chciałbym nadal móc prowadzić działalność według wyraźnej intencji, więc wyłączenie tej aktywności nie jest dobrym rozwiązaniem (nie wiem nawet, czy to zadziała, jeszcze jej nie wypróbowałem, ale Chyba tak będzie). Czy mogę wyłączyć filtr zamiarów?Android: Czy mogę programowo włączyć/wyłączyć filtr zamiarów działania?

+0

Odpowiedź jest dostępna pod adresem http://stackoverflow.com/questions/40505357/disable-the-intent-filter-from-android-manifest-programically/40505924#40505924 – Takermania

Odpowiedz

25

Nie można to zrobić bezpośrednio, ale można utworzyć activity alias w twojej AndroidManifest.xml z filtrem woli w pytaniu, a następnie włączyć lub wyłączyć za pomocą aliasu PackageManager#setComponentEnabledSetting(), pozostawiając inne filtry woli w głównej kopii Aktywny więc nie zostaną naruszeni.

+2

Dalszy ciąg od [tego posta] (http://stackoverflow.com/questions/23919329/android-how-to-create-componentname-in-code-using-activity-alias) nazwą komponentu aliasu aktywności będzie "nowa nazwa komponentu ($ nazwa-pakietu, $ nazwa-pakietu +" . "+ $ aliasName)' gdzie $ packageName jest pakietem twojej aplikacji (przechodź przez 'getActvitiy(). getPackageName()'). –

+2

jeśli używasz nowoczesnej wersji wtyczki android gradle, możesz również uzyskać nazwę pakietu z 'BuildConfig.APPLICATION_ID', (lub" BuildConfig.PACKAGE_NAME "na nieco starszych wersjach wtyczki). Dzięki temu unika się wykonywania wywołań w środowisku wykonawczym, aby uzyskać to, co zawsze będzie tym samym ciągiem znaków. – mlc

+0

Czy mogę usunąć wiele intencji? jeśli moja aktywność ma wiele intencji dla różnych typów tagów NFC iw pewnym momencie nie chcę, aby moja aplikacja wykryła tagi NFC, więc czy mogę usunąć problem z wieloma intencjami? – Query

Powiązane problemy