Android N umożliwia powiązanie Twojej aktywności ze stroną Twojej aplikacji w Ustawieniach . Po prostu dodaj <intent-filter>
dla android.intent.action.APPLICATION_PREFERENCES
. Aplikacja Ustawienia N w Androidzie wyszuka aktywność w Twojej aplikacji, którą ma ta <intent-filter>
. Jeśli znajdzie jeden z nich, doda ikonę koła zębatego do strony aplikacji w Ustawieniach, a jeśli użytkownik dotknie biegu, zostanie on przeniesiony do wyznaczonej czynności.W jaki sposób aplikacja Ustawienia może uruchomić nieeksportowaną aktywność aplikacji?
Martwiłem się o bezpieczeństwo, a więc złożone an issue, szukając zgody mogliśmy korzystać z android:permission
celu umożliwienia ustawienia, aby rozpocząć naszą działalność, ale nie pozwalają inne aplikacje, aby rozpocząć naszą działalność (np WRITE_SECURE_SETTINGS
).
cketti następnie wskazał, że you could just mark the activity as not exported, via android:exported="false"
. Ku mojemu zaskoczeniu to działa.
W jaki sposób aplikacja Ustawienia może rozpocząć działanie oznaczone jako nieeksportowane?
Z pewnością widzę, że istnieje pozwolenie, które kontroluje to. Jednak szybkie przeczytanie manifestu aplikacji (gałąź master branch, n-developer-preview-5) nie przyniosła niczego oczywistego.
Więc:
Czy istnieje zgoda, że umożliwia aplikacja rozpocząć non-eksportowany składnik innej aplikacji? Jeśli tak, to co to jest?
Jeśli nie, w jaki sposób Ustawienia wyłączają tę funkcję?
Odpowiedziałeś na coś podobnego tutaj: http://stackoverflow.com/questions/13892721/activity-exported-false-listed-in-activity-chooser – Shaishav
@Shaishav: Podczas gdy jest na pokrewnym temacie (zabezpieczenie działań z ' '), nie odnosi się do postawionego tu pytania. –
CommonsWare