Language

BlobStoreManager クラス

定義

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

[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
継承
BlobStoreManager
属性

注釈

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

アプリは、BlobHandleで作成できるBlobHandle#createWithSha256(byte[], CharSequence, long, String) オブジェクトを使用して、データ BLOB を発行およびアクセスできます。 この BlobHandle オブジェクトは、BLOB の識別に使用される次の情報をカプセル化します。 <ul><li>BlobHandle#getSha256Digest()<li>BlobHandle#getLabel()<li>BlobHandle#getExpiryTimeMillis()<li>BlobHandle#getTag()</ul> 2 つの BlobHandle オブジェクトが同一と見なされるためには、これらすべての情報が等しい必要があります。

新しいデータ BLOB を提供するには、アプリで BlobStoreManager#createSession(BlobHandle) を使用してセッションを作成し、このセッションを開いて BlobStoreManager#openSession(long)を使用して書き込む必要があります。

次のコード スニペットは、書き込み用のセッションを作成して開く方法を示しています。

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);
                    }
                }

すべてのデータを 1 回の試行で書き込むことができなかった場合、アプリはこのセッションを閉じて、 BlobStoreManager#createSession(BlobHandle)で取得したセッション ID を使用して再度開くことができます。 セッション データは永続化され、デバイスの再起動後でもデータの貢献を完了するために再び開くことができることに注意してください。

データはセッションに書き込まれた後、 Session#commit(Executor, Consumer)を使用してコミットできます。 セッションがコミットされるまで、セッションに書き込まれたデータはアプリと共有されません。

Session#commit(Executor, Consumer)を使用してセッションがコミットされると、このセッションの一部として書き込まれたデータはシールされ、変更できなくなります。

セッションをコミットする前に、1 つ以上のアクセス モード ( <ul><li>Session#allowPackageAccess(String, byte[]) を使用して、投稿されたデータへのアクセスを許可するアプリを指定できます。これにより、特定のパッケージが BLOB にアクセスできるようになります。 <li>Session#allowSameSignatureAccess() BLOB へのアクセスを提供したアプリと同じ証明書で署名されたアプリのみを許可します。 <li>Session#allowPublicAccess() デバイス上の任意のアプリが BLOB にアクセスできるようにします。 </ul>

次のコード スニペットは、アクセス モードを指定し、セッションをコミットする方法を示しています。

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);
                }

データ BLOB の発行元によって指定されたアクセス モード制約の少なくとも 1 つを満たすアプリは、アクセスできます。

これらのアクセス モードを指定せずに発行されたデータ BLOB はプライベートと見なされ、データ BLOB を提供したアプリのみがアクセスを許可されます。 これは、複数のアプリが同じデータを提供する場合に、システムがデータ BLOB の 1 つのコピーをディスク上に保持しようとできるため、デバイスシステムの全体的な正常性に引き続き役立ちます。

事前に BLOB を共有するアプリのセットがわかっている場合は、 Session#allowPackageAccess(String, byte[]) または Session#allowSameSignatureAccess() のいずれかを使用することを強くお勧めします。 Session#allowPublicAccess() は、ライブラリと SDK からコミットされた一般に利用可能なデータを対象とします。

データ BLOB が Session#commit(Executor, Consumer) でコミットされると、呼び出し元がそのデータ BLOB に関連付けられているいずれかのアクセス モードの制約を満たしていると仮定して、 BlobStoreManager#openBlob(BlobHandle)を使用してアクセスできます。 アプリは、 BlobStoreManager#acquireLease(BlobHandle, int) を使用して BLOB のリースを取得し、 BlobStoreManager#releaseLease(BlobHandle)を使用してリースを解放できます。 少なくとも 1 つのアプリがリースされている間、BLOB はシステムから削除されません。

次のコード スニペットは、データ BLOB にアクセスする方法を示しています。

try (InputStream in = new ParcelFileDescriptor.AutoCloseInputStream(
                        blobStoreManager.openBlob(blobHandle)) {
                    useData(in);
                }

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

Name 説明
BlobStoreManager(IntPtr, JniHandleOwnership)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

プロパティ

Name 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
JniPeerMembers

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

LeasedBlobs

呼び出し元アプリが現在リースしているデータ BLOB に対応する BlobHandle BlobHandles を返します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
RemainingLeaseQuotaBytes

リースを取得するための残りのクォータ サイズ (バイト単位) を返します。これは、システムがリース要求の拒否を開始する前に、アプリがリースを取得できるデータの残りの量を示します。

ThresholdClass

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

ThresholdType

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

メソッド

Name 説明
AbandonSession(Int64)

既存のセッションを破棄し、これまでにそのセッションに書き込まれたデータを削除します。

AcquireLease(BlobHandle, ICharSequence, Int64)

blobHandleによって表される BLOB へのリースを取得します。

AcquireLease(BlobHandle, ICharSequence)

blobHandleによって表される BLOB へのリースを取得します。

AcquireLease(BlobHandle, Int32, Int64)

blobHandleによって表される BLOB へのリースを取得します。

AcquireLease(BlobHandle, Int32)

blobHandleによって表される BLOB へのリースを取得します。

AcquireLease(BlobHandle, String, Int64)

blobHandleによって表される BLOB へのリースを取得します。

AcquireLease(BlobHandle, String)

blobHandleによって表される BLOB へのリースを取得します。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
CreateSession(BlobHandle)

指定した BlobHandleを使用して新しいセッションを作成し、セッションを表す一意の ID を返します。

Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
Equals(Object)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
OpenBlob(BlobHandle)

システムによって管理されている BLOB ストアから読み取るための既存の BLOB を開きます。

OpenSession(Int64)

既存のセッションを開き、作業をアクティブに実行します。

ReleaseLease(BlobHandle)

呼び出し元によって現在保持されている blobHandle によって表される BLOB へのアクティブなリースを解放します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

Name 説明
IJavaPeerable.Disposed()

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
IJavaPeerable.Finalized()

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

(継承元 JavaObject)

拡張メソッド

Name 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

このクラスは、システムによって管理される BLOB ストアへのアクセスを提供します。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象