2014-06-08 14 views
5

In Android, was ist der Zweck von < Aktivität-Alias>? Aus der documentation scheint es, dass es nur ein anderer Name für eine vorhandene Aktivität mit Absicht Filter ist, die den Filter der Zielaktivität überschreiben (mein Verständnis bisher).Android - <Aktivitätsalias> Manifest Tag

Was ist seine praktische Verwendung?

Kann ein Anrufer eine Absicht sowohl an das Ziel als auch an den Alias ​​senden?

+1

http://blog.danlew.net/2014/01/16/preserve-your-launchers-use-activity-alias/ –

Antwort

6

Es scheint, dass es nur ein anderer Name für eine bestehende < Aktivität> mit Intent-Filter ist, die den Filter der Zielaktivität überschreiben (soweit ich weiß).

Ich würde es als "Bereitstellung zusätzlicher Filter" definieren, mehr als überschreiben.

Was ist seine praktische Verwendung?

Sie können Komponenten wie <activity-alias> deaktivieren. Sie können <intent-filter> Elemente nicht deaktivieren (obwohl das wirklich nützlich wäre).

Wenn Sie also eine Aktivität haben, die Sie die ganze Zeit verfügbar sein sollen, doch nur einige der Zeit einen bestimmten Filter (oder Filter) darbringen, ist <activity-alias> für Sie.

Ein modernes Beispiel dafür bietet das neue Storage Access Framework. Es war einmal so, dass Sie eine ACTION_GET_CONTENT Aktivität mit einem <intent-filter> Werbe-relevanten MIME-Typen (und möglicherweise ContentProvider Pfade für einen Provider von Ihnen) implementieren, um Dokumente für Anwendungen von Drittanbietern verfügbar zu machen. Wenn Sie jedoch das Storage Access Framework auf Android 4.4 oder höher verwenden, möchten Sie nicht auch haben die ACTION_GET_CONTENT Aktivität verfügbar - der Nettoeffekt ist, dass alles von Ihnen wird zweimal angezeigt. Auf Geräten mit Android 4.4 oder höher müssen Sie entweder die gesamte Aktivität deaktivieren (wenn Sie sie für andere Zwecke nicht benötigen) oder die ACTION_GET_CONTENT 10 in eine <activity-alias> verschieben, damit Sie sie separat deaktivieren können. Dies wird ausführlicher in the documentation beschrieben.

TL; DR: Ich bezweifle, dass viele Entwickler <activity-alias> verwenden, obwohl es seine Anwendungsfälle (z. B. den Launcher in einem Kommentar zu Ihrer Frage zitiert) hat.

Kann ein Anrufer eine Absicht sowohl an das Ziel als auch an den Alias ​​senden?

Um, wenn durch das, du meinst „kann ich startActivity() entweder die Aktivität oder den Alias ​​beginnen?“, Dann, ja.

+0

Danke für die Antwort! :) – Jake

Verwandte Themen