Wie kann die Einstellungs-App die nicht exportierte Aktivität einer App starten?

it @Android N können Sie eine Aktivität von Ihnen auf der Seite Ihrer App in den Einstellungen verknüpfen. Füge einfach ein @ hin<intent-filter> zumandroid.intent.action.APPLICATION_PREFERENCES. Die Einstellungen-App von Android N sucht in Ihrer App nach Aktivitäten mit dem<intent-filter>. Wenn Einstellungen eines finden, wird der Seite Ihrer App in den Einstellungen ein Zahnradsymbol hinzugefügt. Wenn der Benutzer auf das Zahnrad tippt, werden diese zu Ihrer festgelegten Aktivität weitergeleitet.

Ich war besorgt um die Sicherheit, und so reichte ich ein Problem, auf der Suche nach einer Berechtigung, die wir mit @ verwenden könntandroid:permission, um zuzulassen, dass Einstellungen unsere Aktivität starten, andere Apps jedoch nicht, um unsere Aktivität zu starten (z. B.WRITE_SECURE_SETTINGS).

cketti wies darauf hin, dassSie können die Aktivität einfach über @ als nicht exportiert markiereandroid:exported="false". Sehr zu meiner Überraschung funktioniert das.

Wie kann die App "Einstellungen" eine Aktivität starten, die als nicht exportiert markiert ist?

Ich kann mit Sicherheit feststellen, dass es eine Berechtigung gibt, die dies steuert. Ein kurzer Blick auf das Manifest der Einstellungs-App master branch, n-developer-preview-5 branch) hat nichts offensichtliches ergeben.

So

Gibt es eine Berechtigung, mit der eine App eine nicht exportierte Komponente einer anderen App starten kann? Wenn ja, um welche handelt es sich?

Wenn nicht, wie setzen die Einstellungen dies um?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage