BlobStoreManager Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher.
[Android.Runtime.Register("android/app/blob/BlobStoreManager", ApiSince=30, DoNotGenerateAcw=true)]
public class BlobStoreManager : Java.Lang.Object
[<Android.Runtime.Register("android/app/blob/BlobStoreManager", ApiSince=30, DoNotGenerateAcw=true)>]
type BlobStoreManager = class
inherit Object
- Vererbung
- Attribute
Hinweise
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher.
Apps können ein Datenblob mithilfe eines BlobHandle Objekts veröffentlichen und darauf zugreifen, das mit BlobHandle#createWithSha256(byte[], CharSequence, long, String)einem Objekt erstellt werden kann. Dieses BlobHandle Objekt kapselt die folgenden Informationen, die zum Identifizieren der Blobs verwendet werden: <ul><li>BlobHandle#getSha256Digest()<li li>BlobHandle#getLabel()<li>BlobHandle#getExpiryTimeMillis()<>BlobHandle#getTag()</ul> Für zwei BlobHandle Objekte, die als identisch betrachtet werden sollen, müssen alle diese Informationen gleich sein.
Zum Beitragen eines neuen Daten-Blobs muss eine App eine Sitzung mithilfe BlobStoreManager#createSession(BlobHandle) erstellen und diese Sitzung dann zum Schreiben mithilfe BlobStoreManager#openSession(long)öffnen.
Der folgende Codeausschnitt zeigt, wie Sie eine Sitzung zum Schreiben erstellen und öffnen:
final long sessionId = blobStoreManager.createSession(blobHandle);
try (BlobStoreManager.Session session = blobStoreManager.openSession(sessionId)) {
try (OutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(
session.openWrite(offsetBytes, lengthBytes))) {
writeData(out);
}
}
Wenn alle Daten nicht in einem einzigen Versuch geschrieben werden konnten, können Apps diese Sitzung schließen und erneut öffnen, indem die sitzungs-ID verwendet wird, die über BlobStoreManager#createSession(BlobHandle). Beachten Sie, dass die Sitzungsdaten beibehalten und erneut geöffnet werden können, um den Datenbeitrag abzuschließen, auch über Geräteneustarts hinweg.
Nachdem die Daten in die Sitzung geschrieben wurden, kann sie mithilfe Session#commit(Executor, Consumer)von Commits übernommen werden. Bis zum Commit der Sitzung werden daten, die in die Sitzung geschrieben wurden, nicht für jede App freigegeben.
Sobald eine Sitzung mithilfe Session#commit(Executor, Consumer)eines Commits zugesichert wurde, werden alle im Rahmen dieser Sitzung geschriebenen Daten versiegelt und können nicht mehr geändert werden.
Vor dem Commit für die Sitzung können Apps angeben, welche Apps über einen oder mehrere der folgenden Zugriffsmodi auf die beigetragenen Daten zugreifen dürfen: <ul><li>Session#allowPackageAccess(String, byte[]) , wodurch bestimmte Pakete auf die Blobs zugreifen können.
<li>Session#allowSameSignatureAccess() , die nur Apps zulassen, die mit demselben Zertifikat signiert sind wie die App, die zum Zugriff auf das Blob beigetragen hat.
<li>Session#allowPublicAccess() , mit dem jede App auf dem Gerät auf das Blob zugreifen kann.
</ul>
Der folgende Codeausschnitt zeigt, wie Sie den Zugriffsmodus angeben und die Sitzung übernehmen:
try (BlobStoreManager.Session session = blobStoreManager.openSession(sessionId)) {
try (OutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(
session.openWrite(offsetBytes, lengthBytes))) {
writeData(out);
}
session.allowSameSignatureAccess();
session.allowPackageAccess(packageName, certificate);
session.commit(executor, callback);
}
Apps, die mindestens eine der vom Herausgeber des Datenblobs angegebenen Zugriffsmoduseinschränkungen erfüllen, können darauf zugreifen.
Ein daten-BLOB, das ohne Angabe dieser Zugriffsmodi veröffentlicht wird, wird als privat betrachtet, und nur die App, die zum Daten-BLOB beigetragen hat, kann darauf zugreifen. Dies ist weiterhin nützlich für die allgemeine Gerätesystemintegrität, da das System versuchen kann, eine Kopie des Daten-BLOB auf dem Datenträger beizubehalten, wenn mehrere Apps dieselben Daten beitragen.
Es wird dringend empfohlen, dass Apps eine von Session#allowPackageAccess(String, byte[]) oder Session#allowSameSignatureAccess() wenn sie wissen, vorab die Gruppe der Apps, für die sie die Blobs freigeben möchten, verwenden.
Session#allowPublicAccess() ist für öffentlich verfügbare Daten vorgesehen, die aus Bibliotheken und SDKs zugesichert werden.
Sobald ein Daten-BLOB zugesichert Session#commit(Executor, Consumer)wurde, kann darauf zugegriffen BlobStoreManager#openBlob(BlobHandle)werden, vorausgesetzt, der Aufrufer erfüllt Einschränkungen eines der Zugriffsmodi, die diesem Daten-BLOB zugeordnet sind. Eine App kann eine Lease für ein Blob erwerben BlobStoreManager#acquireLease(BlobHandle, int) und die Lease freigeben mit BlobStoreManager#releaseLease(BlobHandle). Ein Blob wird nicht aus dem System gelöscht, während es mindestens eine App leasingt.
Der folgende Codeausschnitt zeigt, wie Sie auf das Daten-BLOB zugreifen:
try (InputStream in = new ParcelFileDescriptor.AutoCloseInputStream(
blobStoreManager.openBlob(blobHandle)) {
useData(in);
}
Java Dokumentation für android.app.blob.BlobStoreManager.
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.
Konstruktoren
| Name | Beschreibung |
|---|---|
| BlobStoreManager(IntPtr, JniHandleOwnership) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| 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 bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| JniPeerMembers |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. |
| LeasedBlobs |
Gibt die |
| PeerReference |
Ruft den JNI-Objektverweis für diesen Java Peer ab. (Geerbt von Object) |
| RemainingLeaseQuotaBytes |
Gibt die verbleibende Kontingentgröße für den Erwerb einer Lease (in Byte) zurück, die die verbleibende Datenmenge angibt, für die eine App eine Lease erwerben kann, bevor das System mit dem Ablehnen von Leaseanforderungen beginnt. |
| ThresholdClass |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. |
| ThresholdType |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. |
Methoden
| Name | Beschreibung |
|---|---|
| AbandonSession(Int64) |
Beendet eine vorhandene Sitzung und löscht alle Daten, die bisher in diese Sitzung geschrieben wurden. |
| AcquireLease(BlobHandle, ICharSequence, Int64) |
Erwerben Sie eine Lease an das blob, dargestellt durch |
| AcquireLease(BlobHandle, ICharSequence) |
Erwerben Sie eine Lease an das blob, dargestellt durch |
| AcquireLease(BlobHandle, Int32, Int64) |
Erwerben Sie eine Lease an das blob, dargestellt durch |
| AcquireLease(BlobHandle, Int32) |
Erwerben Sie eine Lease an das blob, dargestellt durch |
| AcquireLease(BlobHandle, String, Int64) |
Erwerben Sie eine Lease an das blob, dargestellt durch |
| AcquireLease(BlobHandle, String) |
Erwerben Sie eine Lease an das blob, dargestellt durch |
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| CreateSession(BlobHandle) |
Erstellen Sie eine neue Sitzung mithilfe des angegebenen |
| 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 bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| Equals(Object) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (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) |
| JavaFinalize() |
Veraltet.
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) |
| 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) |
| OpenBlob(BlobHandle) |
Öffnet ein vorhandenes Blob zum Lesen aus dem vom System verwalteten BLOB-Speicher. |
| OpenSession(Int64) |
Öffnen Sie eine vorhandene Sitzung, um Aktivarbeit auszuführen. |
| ReleaseLease(BlobHandle) |
Lassen Sie alle aktiven Leases für das Blob frei, das |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (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) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| IJavaPeerable.Finalized() |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. (Geerbt von JavaObject) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Diese Klasse bietet Zugriff auf den vom System verwalteten BLOB-Speicher. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |