2014-01-12 14 views
10

Ich habe eine Basisaktivität, aus der ich mehrere andere Aktivitäten abstammt.Aktivität nicht im Manifest registriert Lint Warnung

Diese anderen Aktivitäten, die ich im Manifest registriere, können ich aus meiner Anwendung heraus verwenden.

Aber Android-Inspektion sagt, für meine Basisaktivität, "Activity not registered in the manifest".

Ich sehe keinen Grund, die Basisaktivität zu registrieren, da ich sie nie direkt benutze. Aber vielleicht verpasse ich etwas und die Warnung sollte nicht ignoriert werden?

Warum diese Warnung überhaupt?

+0

Meine Annahme ist, dass das Android Studio nur überprüft, ob die angegebene Klasse von Aktivität erbt oder nicht. Soweit ich das beurteilen kann, gibt es für Android Studio keinen einfachen Weg zu erkennen, ob eine Klasse eine Basisklasse ist und tatsächlich verwendet wird oder nicht. – Ahmad

+0

Die einzige Notwendigkeit, dem Manifest Aktivitäten hinzuzufügen, besteht darin, die Absichten beim System zu registrieren, sodass Ihre Komponenten und andere Apps eine Absicht zum Starten der Aktivität erstellen können. Sie können die Flussprüfung deaktivieren oder die Aktivität zu Ihrem Manifest hinzufügen oder einfach ignorieren. – Simon

+0

@Simon Wenn ich meine Basisaktivitäten zum Manifest hinzufüge, kann es unvorhergesehene Sicherheitsrisiken geben? –

Antwort

16

Sie müssen nur Aktivitäten auflisten, die Eingangspunkte für Ihre App im Manifest sind. Das heißt, Aktivitäten, die mit einem Intent aufgerufen werden.

Sie sollten keine Aktivitäten haben, die tatsächlich keine instanziierbaren Einstiegspunkte sind. Machen Sie solche Aktivitätsklassen abstract. Dies wird auch die Flusenwarnung los.

+0

Ah, wirklich. Ich habe nicht darüber nachgedacht, sie abstrakt zu machen, ha! Vielen Dank. –

+0

Ich übernehme einen großen Teil des Codes von woanders, wie überprüfe ich, ob es mit einer "Absicht" aufgerufen werden kann? – not2qubit

1

Sie sollten Ihre BaseActivity als eine abstrakte Klasse machen. Keine Notwendigkeit, solche Aktivitäten in Manifest zu registrieren, sie sind nur einfache Java-Klassen, die die Aktivitätsklasse nicht um eine Aktivität Ihrer Anwendung erweitern.

Verwandte Themen