BlobStoreManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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 |
| 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 |
| 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 |
| AcquireLease(BlobHandle, ICharSequence) |
Adquira uma concessão para o blob representado por |
| AcquireLease(BlobHandle, Int32, Int64) |
Adquira uma concessão para o blob representado por |
| AcquireLease(BlobHandle, Int32) |
Adquira uma concessão para o blob representado por |
| AcquireLease(BlobHandle, String, Int64) |
Adquira uma concessão para o blob representado por |
| AcquireLease(BlobHandle, String) |
Adquira uma concessão para o blob representado por |
| 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 |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| 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 |