BlobStoreManager Classe

Definição

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

[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
Herança
BlobStoreManager
Atributos

Comentários

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

Os aplicativos podem publicar e acessar um blob de dados usando um BlobHandle objeto que pode ser criado com BlobHandle#createWithSha256(byte[], CharSequence, long, String). Este BlobHandle objeto encapsula as seguintes informações usadas para identificar os blobs: <ul><li>BlobHandle#getSha256Digest()<li>BlobHandle#getLabel()<li li>BlobHandle#getExpiryTimeMillis()<>BlobHandle#getTag()</ul> Para que dois BlobHandle objetos sejam considerados idênticos, todas essas informações devem ser iguais.

Para contribuir com um novo blob de dados, um aplicativo precisa criar uma sessão usando BlobStoreManager#createSession(BlobHandle) e, em seguida, abrir esta sessão para escrever usando BlobStoreManager#openSession(long).

O snippet de código a seguir mostra como criar e abrir uma sessão para escrever:

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

Se todos os dados não puderem ser gravados em uma única tentativa, os aplicativos poderão fechar essa sessão e abri-los novamente usando a ID da sessão obtida por meio BlobStoreManager#createSession(BlobHandle)de . Observe que os dados da sessão são persistentes e podem ser rea abertos para concluir a contribuição de dados, mesmo entre reinicializações do dispositivo.

Depois que os dados são gravados na sessão, eles podem ser confirmados usando Session#commit(Executor, Consumer). Até que a sessão seja confirmada, os dados gravados na sessão não serão compartilhados com nenhum aplicativo.

Depois que uma sessão é confirmada usando Session#commit(Executor, Consumer), todos os dados gravados como parte desta sessão são lacrados e não podem mais ser modificados.

Antes de confirmar a sessão, os aplicativos podem indicar quais aplicativos têm permissão para acessar os dados contribuidos usando um ou mais dos seguintes modos de acesso: ul<>li<>, Session#allowPackageAccess(String, byte[])que permitirá que pacotes específicos acessem os blobs. <li>Session#allowSameSignatureAccess() , que permitirá apenas aplicativos assinados com o mesmo certificado que o aplicativo que contribuiu com o blob para acessá-lo. <li>Session#allowPublicAccess() , que permitirá que qualquer aplicativo no dispositivo acesse o blob. </ul>

O snippet de código a seguir mostra como especificar o modo de acesso e confirmar a sessão:

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

Os aplicativos que atendem a pelo menos uma das restrições de modo de acesso especificadas pelo editor do blob de dados poderão acessá-lo.

Um blob de dados publicado sem especificar nenhum desses modos de acesso será considerado privado e somente o aplicativo que contribuiu com o blob de dados terá permissão para acessá-lo. Isso ainda é útil para a integridade geral do sistema de dispositivos, pois o Sistema pode tentar manter uma cópia do blob de dados no disco quando vários aplicativos contribuem com os mesmos dados.

É altamente recomendável que os aplicativos usem um ou Session#allowPackageAccess(String, byte[])Session#allowSameSignatureAccess() quando souberem, antecipadamente, o conjunto de aplicativos com os quais eles gostariam de compartilhar os blobs. Session#allowPublicAccess() destina-se a dados publicamente disponíveis confirmados de bibliotecas e SDKs.

Depois que um blob de dados é confirmado, Session#commit(Executor, Consumer)ele pode ser acessado usando BlobStoreManager#openBlob(BlobHandle), supondo que o chamador satisfaça as restrições de qualquer um dos modos de acesso associados a esse blob de dados. Um aplicativo pode adquirir uma concessão em um blob com BlobStoreManager#acquireLease(BlobHandle, int) e liberar a concessão com BlobStoreManager#releaseLease(BlobHandle). Um blob não será excluído do sistema enquanto houver pelo menos um aplicativo alugando-o.

O snippet de código a seguir mostra como acessar o blob de dados:

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

Java documentação para android.app.blob.BlobStoreManager.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Construtores

Nome Description
BlobStoreManager(IntPtr, JniHandleOwnership)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
JniPeerMembers

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

LeasedBlobs

Retorne o BlobHandle BlobHandles correspondente aos blobs de dados em que o aplicativo de chamada atualmente tem uma concessão.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
RemainingLeaseQuotaBytes

Retorne o tamanho de cota restante para adquirir uma concessão (em bytes) que indica a quantidade restante de dados em que um aplicativo pode adquirir uma concessão antes que o Sistema comece a rejeitar solicitações de concessão.

ThresholdClass

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

ThresholdType

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

Métodos

Nome Description
AbandonSession(Int64)

Abandona uma sessão existente e exclui todos os dados que foram gravados nessa sessão até agora.

AcquireLease(BlobHandle, ICharSequence, Int64)

Adquira uma concessão para o blob representado por blobHandle.

AcquireLease(BlobHandle, ICharSequence)

Adquira uma concessão para o blob representado por blobHandle.

AcquireLease(BlobHandle, Int32, Int64)

Adquira uma concessão para o blob representado por blobHandle.

AcquireLease(BlobHandle, Int32)

Adquira uma concessão para o blob representado por blobHandle.

AcquireLease(BlobHandle, String, Int64)

Adquira uma concessão para o blob representado por blobHandle.

AcquireLease(BlobHandle, String)

Adquira uma concessão para o blob representado por blobHandle.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
CreateSession(BlobHandle)

Crie uma nova sessão usando a BlobHandledeterminada, retornando uma ID exclusiva que representa a sessão.

Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
Equals(Object)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
OpenBlob(BlobHandle)

Abre um blob existente para leitura do repositório de blobs gerenciado pelo sistema.

OpenSession(Int64)

Abra uma sessão existente para executar ativamente o trabalho.

ReleaseLease(BlobHandle)

Libere qualquer concessão ativa para o blob representado pelo blobHandle qual atualmente é mantido pelo chamador.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

(Herdado de JavaObject)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Essa classe fornece acesso ao repositório de blobs gerenciado pelo sistema.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a