Sprache

AttributionSource Klasse

Definition

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

[Android.Runtime.Register("android/content/AttributionSource", ApiSince=31, DoNotGenerateAcw=true)]
public sealed class AttributionSource : Java.Lang.Object, Android.OS.IParcelable, IDisposable
[<Android.Runtime.Register("android/content/AttributionSource", ApiSince=31, DoNotGenerateAcw=true)>]
type AttributionSource = class
    inherit Object
    interface IParcelable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Vererbung
AttributionSource
Attribute
Implementiert

Hinweise

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll. Zuschreibungsquellen können verkettet werden, um Fälle darzustellen, in denen die geschützten Daten über mehrere Anwendungen fließen würden. Beispielsweise kann App A app B nach Kontakten fragen und app B wiederum App C nach Kontakten fragen. In diesem Fall wäre die Attributionskette A -> B -> C und der Datenfluss wäre C -> B -> A. Es gibt zwei Hauptvorteile der Verwendung des Attributionsquellenmechanismus: Vermeiden Sie explizite Berechtigungsprüfungen im Namen der aufrufenden App, wenn Sie in ihrem Auftrag auf private Daten zugreifen, um sie zurückzusenden; Vermeiden Sie doppelte Datenzugriffsbeschuldung, was geschieht, wenn Sie die Berechtigungen der aufrufenden App überprüfen und wenn Sie auf die Daten hinter diesen Berechtigungen zugreifen (für Laufzeitberechtigungen). Auch wenn der Aufrufer den Datenzugriff nicht explizit angibt, wird der Datenzugriff auf Ihre App im Vergleich zur vorherigen App gezählt, bei der es sich nur um einen Proxy handelte.

Jeder Context hat eine Attributionsquelle und Sie können es über Context#getAttributionSource() die Darstellung selbst erhalten, die eine Kette von einem ist. Sie können eine andere App oder genauer eine Kette von Apps zuordnen, über die die Daten, auf die Sie zugreifen würden, fließen würden, sowie Context#createContext( ContextParams) eine Attributionsquelle für die nächste App angeben, um die geschützten Daten zu empfangen, auf die Sie zugreifen.AttributionSource.Builder#setNext( AttributionSource) Durch das Erstellen dieser Attributionskette wird sichergestellt, dass die Datenquelle überprüft, ob jede App in der Attributionskette über die Berechtigung zum Zugreifen auf die Daten verfügt, bevor Sie sie freigeben. Die Datenquelle zeichnet auch entsprechend auf, dass auf diese Daten von den Apps in der Sequenz zugegriffen wurde, wenn sich die Daten hinter einer vertraulichen Berechtigung (z. B. gefährlich) befindet. Auch hier ist dies hilfreich, wenn Sie im Auftrag einer anderen App auf die Daten zugreifen, z. B. eine Spracherkennung mit dem Mikrofon, damit sie eine Erkennung für eine aufrufende App bereitstellen kann.

Sie können eine Attributionskette von Ihnen und jeder anderen App ohne Überprüfung erstellen, da dies bereits über die android.app.AppOpsManager APIs verfügbar ist. Dies wird unterstützt, um Fälle zu behandeln, in denen Sie keinen Zugriff auf die Attributionsquelle des Aufrufers haben, und Sie können die AttributionSource.Builder APIs direkt verwenden. Wenn die Daten jedoch mehr als zwei Apps durchlaufen (mehr als Sie auf die Daten für den Aufrufer zugreifen), müssen Sie über ein Handle für den AttributionSource Kontext der aufrufenden App verfügen, um einen Attributionskontext zu erstellen. Dies bedeutet, dass Sie entweder über eine API für die andere App verfügen müssen, um Ihre Attributionsquelle zu senden oder eine Plattform-API zu verwenden, die die Namensnennungsquelle der Aufrufer übergibt.

Sie können eine Attributionskette nicht schmieden, ohne dass jede App in der Attributionskette beteiligt ist (abgesehen vom oben erwähnten Sonderfall). Um eine vertrauenswürdige Attributionsquelle zu erstellen, müssen Sie einen Attributionskontext erstellen, der auf eine Attributionsquelle verweist, die explizit von der App erstellt wurde, auf die sie verweist, rekursiv.

Da das Erstellen eines Attributionskontexts zu allen Berechtigungen für Apps in der Zuschreibungskette führt, müssen Sie davon ausgehen, dass beim Zugriff auf berechtigungsgeschützte APIs eine Sicherheits ausnahme angezeigt wird, da einige Apps in der Kette möglicherweise nicht über die Berechtigung verfügen.

Java Dokumentation für android.content.AttributionSource.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Name Beschreibung
AttributionTag

Das Attributionstag der App, die auf die berechtigungsgeschützten Daten zugreift.

Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
Creator

Ruft den paketfähigen Ersteller für eine Attributionsquelle ab.

DeviceId

Ruft die Geräte-ID für diese Attributionsquelle ab.

Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
JniIdentityHashCode

Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist.

(Geerbt von Object)
JniManagedPeerState

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
JniPeerMembers

Ruft die JNI-Metadaten ab, die zum Aufrufen von Mitgliedern dieses Java Peers verwendet werden.

Next

Die nächste App, die die berechtigungsgeschützten Daten empfängt.

PackageName

Das Paket, das auf die berechtigungsgeschützten Daten zugreift.

PeerReference

Ruft den JNI-Objektverweis für diesen Java Peer ab.

(Geerbt von Object)
Pid

Die PID, die auf die berechtigungsgeschützten Daten zugreift.

ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
Uid

Die UID, die auf die berechtigungsgeschützten Daten zugreift.

Methoden

Name Beschreibung
CheckCallingUid()

Wenn Sie einen IPC behandeln und dem Aufrufer nicht vertrauen, müssen Sie überprüfen, ob die Attributionsquelle eine für die aufrufende App ist, um zu verhindern, dass der Aufrufer Eine Quelle von einer anderen App übergibt, ohne sich selbst in die Attributionskette einzuschließen.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
DescribeContents()

Beschreiben Sie die Arten spezieller Objekte, die in der Marshall-Darstellung dieser Paketable-Instanz enthalten sind. Wenn das Objekt beispielsweise einen Dateideskriptor in die Ausgabe von writeToParcel(Parcel,int) einschließt, muss der Rückgabewert dieser Methode das CONTENTS_FILE_DESCRIPTOR Bit enthalten.

Dispose()

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
Dispose(Boolean)

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
DisposeUnlessReferenced()

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
EnforceCallingUid()

Wenn Sie einen IPC behandeln und dem Aufrufer nicht vertrauen, müssen Sie überprüfen, ob die Attributionsquelle eine für die aufrufende App ist, um zu verhindern, dass der Aufrufer Eine Quelle von einer anderen App übergibt, ohne sich selbst in die Attributionskette einzuschließen.

Equals(Object)

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
IsTrusted(Context)

Überprüft, ob diese Attributionsquelle vertrauenswürdig sein kann.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
MyAttributionSource()

Gibt ein generisches AttributionSource , das den gesamten Aufrufprozess darstellt.

Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
ToArray<T>()

Erstellt ein verwaltetes Array aus diesem Java Arraywrapper.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><>

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
WriteToParcel(Parcel, ParcelableWriteFlags)

Flachen Sie dieses Objekt in ein Paket.

Explizite Schnittstellenimplementierungen

Name Beschreibung
IJavaPeerable.Disposed()

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
IJavaPeerable.Finalized()

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

(Geerbt von JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Diese Klasse stellt eine Quelle dar, der der Zugriff auf berechtigungsgeschützte Daten zugeordnet werden soll.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: