2012-04-03 8 views
4

Und wieder habe ich eine Frage, die wieder mit Android zusammenhängt. Es ist nur für mich, mehr Einblick in die Funktionsweise des Sendens von Sendungen zu bekommen.Welche Sicherheitsprobleme könnte SendBroadcast verursachen und was ist ein besserer Ansatz?

Was würde Ich mag wissen, ist:

1. Warum sollte man den Rundfunkempfänger über Aktivitäten für Ergebnis verwenden?
Ich dachte, der Broadcast-Empfänger würde nützlicher sein, um tatsächliche Gerätemeldungen zu behandeln, als nur um Absichten in einer App zu umgehen.

2. Mit welchen Sicherheitsproblemen könnte ein Entwickler konfrontiert werden?
Habe ich recht, wenn ich annehme, dass jeder, der meinen Paketnamen kennt (vielleicht durch Reverse Engineering), im Prinzip die gesendeten Absichten erfassen und die damit übertragenen Informationen sehen könnte?

3. Was nützt der LocalBroadcastManager, wenn Sie Objekte an andere Aktivitäten übergeben möchten?
Ich habe gelesen, dass dies besser sein könnte, wenn Sie nicht möchten, dass die Absenden Absichten außerhalb der App. Bedeutet das auch, dass selbst wenn jemand den Paketnamen hat, die Sendung nicht außerhalb der App empfangen werden kann?

Wenn Sie meinen, dass meine Fragen nicht vollständig sind oder auf falschen Annahmen basieren, lassen Sie es mich bitte wissen, damit ich daraus lernen kann. :)

Vielen Dank an alle, die helfen können.

Cheers,

Do

Antwort

7

1) Broadcast-Empfänger ist ein Mechanismus Nachrichten (Absichten zu empfangen) weltweit ohne jede UI hat. Sie sind gut, um Informationen zwischen verschiedenen Komponenten wie Service, Activity oder sogar BroadcastReceiver selbst zu übergeben. Sie können in Manifest definiert werden, um bestimmte Aktionen zu überwachen und Dinge zu tun (z. B. Starten von Service/Aktivität), selbst wenn Ihre App nicht ausgeführt wird. In activityForResult muss jedoch Ihre App (Aktivität) ausgeführt werden, um Ergebnisse zu erhalten, die möglicherweise nicht immer passend sind.

2) Ja, wenn Ihre Aktionszeichenkette anderen Apps bekannt ist, werden Ihre Übertragungen jedem Empfänger ausgesetzt, der diese spezifischen Aktionen überwacht. Um dies zu vermeiden, verwenden Sie LocalBroadcastManager.

3) Mit LocalBroadcastManager ist der beste Weg, die Privatsphäre zu erhöhen, indem sichergestellt wird, dass Ihre Sendung wird nur und hörte innerhalb Ihres Anwendung Kontext übertragen. Andere Anwendungen können solche Broadcasts nicht hören, da sie ihren eigenen Kontext haben und nicht über den Kontext Ihrer App informiert sind.

Per Google Text & Tabellen für LocalBroadcastManager:

  • Sie wissen, dass die Daten, die Sie senden Ihre App nicht verlassen, so müssen nicht über undichte private Daten sorgen.
  • Es ist nicht möglich, dass andere Anwendungen diese Broadcasts an Ihre App senden, sodass Sie sich keine Sorgen über Sicherheitslücken machen müssen, die von ausgenutzt werden können.
  • es effizienter ist, eine globale Ausstrahlung durch das System

Abschließende Worte als das Senden: Wenn Sie Nachrichten in Ihrer App müssen auszustrahlen und wollen sie nicht global schicken, dann LocalBroadcastManager ist die beste Wahl. Ansonsten geh mit dem normalen Weg

+0

umfassende Antwort @Waqas – SohailAziz

+0

Dies macht die Dinge viel klarer. Vielen Dank! :) – StingRay5

+0

Das ist sehr gut @ Waqas –

Verwandte Themen