Builds: ...

Notificações & Push

Notificações locais, agendamento, loops recorrentes e push remoto via OneSignal.

notificar(opcoes) notify()

Envia uma notificação local instantânea para o celular.

Por que usar?

Fornece feedback imediato ao usuário fora do app (ex: download concluído, sucesso).

Como usar / Dicas

Basta preencher título e texto. Você pode configurar para abrir o app ao clicar.

Atenção / Cuidados

Android 13+ requer POST_NOTIFICATIONS aceita.

titulotextoaoClicar?acoes?
↩ Promise<{ id }>
await notificar({ titulo: "Pedido aprovado", texto: "Toque para abrir o app" });
agendarNotificacao(opcoes) scheduleNotification()

Agenda uma notificação para o futuro. Funciona mesmo com o app fechado.

Por que usar?

Engajamento. Permite trazer o usuário de volta ao app em um horário específico.

Como usar / Dicas

Agende com um timestamp em milissegundos para o futuro.

Atenção / Cuidados

Pode atrasar alguns minutos devido ao modo Doze do Android.

titulotextoquandoaoClicar?
↩ Promise<{ id }>
await agendarNotificacao({ titulo: "Lembrete", texto: "Hora de abrir o app", quando: Date.now() + 60000 });
agendarLoopNotificacoes(opcoes) scheduleNotificationLoop()

Cria um loop de notificações recorrentes. O Android dispara a próxima da lista a cada intervalo.

Por que usar?

Ideal para apps de saúde ou rotinas (ex: "Beba água a cada 2h").

Como usar / Dicas

Passe uma lista de textos e o intervalo ("2h"). O sistema cicla as mensagens.

Atenção / Cuidados

Intervalos menores que 1 hora podem ser bloqueados pela bateria do Android.

aCadanotificacoes[]
↩ Promise<{ id }>
const loop = await agendarLoopNotificacoes({ aCada: "12h", notificacoes: [ { titulo: "Beba água", texto: "Hidrate-se" }, { titulo: "Alongamento", texto: "Pausa rápida" } ] });
cancelarNotificacao(id) cancelNotification()

Cancela uma notificação agendada ou loop pelo ID.

Por que usar?

Impedir que um lembrete seja disparado caso a tarefa já tenha sido concluída.

Como usar / Dicas

Guarde o ID retornado ao agendar e passe para esta função.

Atenção / Cuidados

Não afeta notificações push enviadas pelo servidor.

id
↩ Promise
await cancelarNotificacao(loop.id);
aoClicarNotificacao(callback) onNotificationClick()

Dispara quando o usuário toca em uma notificação.

Por que usar?

Capturar quando o usuário abre o app tocando em uma notificação local.

Como usar / Dicas

Ouça o evento na inicialização do app para rotear o usuário para a tela correta.

Atenção / Cuidados

A notificação precisa ter a propriedade aoClicar configurada para o evento disparar.

callback(evento)
↩ Function (cancelar)
aoClicarNotificacao((evento) => { console.log(evento.id, evento.aoClicar); });
solicitarPermissaoPush() requestPushPermission()

Solicita permissão de push remoto (OneSignal). Requer oneSignalAppId no app.json.

Por que usar?

Permite enviar campanhas globais para toda a base instalada.

Como usar / Dicas

Mostre uma tela explicando os benefícios antes de chamar a função.

Atenção / Cuidados

Requer o oneSignalAppId preenchido na configuração do app (app.json).

↩ Promise<{ granted }>
const perm = await solicitarPermissaoPush();
identificarUsuarioPush(id) loginPushUser()

Vincula um ID de usuário ao OneSignal para push direcionado.

Por que usar?

Para enviar notificações push apenas para um usuário específico (ex: "Seu pedido saiu").

Como usar / Dicas

Passe o ID único (do seu banco de dados) após o login.

Atenção / Cuidados

Sincroniza diretamente com o servidor do OneSignal.

id
↩ void
identificarUsuarioPush("user-123");
adicionarTagPush(chave, valor) addPushTag()

Adiciona uma tag ao perfil OneSignal do usuário para segmentação.

Por que usar?

Segmentar sua base. Permite enviar pushes apenas para assinantes "Premium", por exemplo.

Como usar / Dicas

Chame passando chave e valor sempre que o perfil do usuário mudar.

Atenção / Cuidados

As tags substituem os valores antigos se você usar a mesma chave.

chavevalor
↩ void
adicionarTagPush("plano", "premium");
agendarNotificacoes(array) scheduleNotifications()

Agenda várias notificações de uma vez.

Por que usar?

Planejar múltiplos alertas de uma só vez para campanhas longas.

Como usar / Dicas

Passe um array de objetos de notificação com seus timestamps.

Atenção / Cuidados

Limpe agendamentos antigos se a agenda do usuário mudar.

notificacoes[]
↩ Promise<[{ id }]>
await agendarNotificacoes([ { titulo: "Primeiro", texto: "Msg 1", quando: Date.now() + 60000 }, { titulo: "Segundo", texto: "Msg 2", quando: Date.now() + 120000 } ]);
solicitarPermissaoNotificacoes() requestNotificationPermission()

Solicita permissão de notificações (Android 13+).

Por que usar?

No Android moderno, nenhuma notificação aparece sem essa permissão explícita.

Como usar / Dicas

Chame antes da primeira notificação ou em uma tela de Onboarding.

Atenção / Cuidados

O Android exibe um popup do sistema apenas nas primeiras tentativas. Depois, o usuário precisa ir nas Configurações.

↩ Promise
const permitido = await solicitarPermissaoNotificacoes(); if (permitido) { /* pode notificar */ }
aoClicarPush(callback) onPushClick()

Dispara quando o usuário clica em uma notificação push remota (OneSignal).

Por que usar?

Processar cliques em pushes remotos (OneSignal) para abrir telas específicas.

Como usar / Dicas

Registre o ouvinte assim que o app abrir.

Atenção / Cuidados

Diferente da notificação local, o payload vem do painel do OneSignal.

callback(evento)
↩ Function (cancelar)
const parar = aoClicarPush((evento) => { abrirNoApp("#/notificacoes"); });

Câmera & Mídia

Capture fotos, vídeos, escaneie QR Codes e reconheça texto em imagens.

tirarFoto(opcoes?) takePhoto()

Abre a câmera e tira uma foto. Pode retornar em base64.

Por que usar?

Acelera o envio de fotos para perfil, comprovantes ou inspeções.

Como usar / Dicas

Use { base64: true } para exibir um preview imediato ou enviar em JSON para sua API.

Atenção / Cuidados

Pode retornar nulo se o usuário desistir ou negar a câmera.

base64?qualidade?
↩ Promise<{ base64, mimeType, uri }>
const foto = await tirarFoto({ base64: true }); img.src = `data:${foto.mimeType};base64,${foto.base64}`;
capturarVideo() captureVideo()

Abre a câmera no modo de vídeo.

Por que usar?

Para registrar evidências visuais longas (vistorias, relatos).

Como usar / Dicas

O retorno traz a URI local do arquivo mp4.

Atenção / Cuidados

Vídeos são pesados. Cuidado ao tentar convertê-los inteiros para base64.

↩ Promise<{ uri, nome, mimeType }>
const video = await capturarVideo();
escanearQRCode() scanQRCode()

Abre o scanner de QR Code e retorna o texto identificado.

Por que usar?

Agiliza pagamentos, check-ins e leitura de links.

Como usar / Dicas

O plugin abre uma interface nativa leve e otimizada para o leitor.

Atenção / Cuidados

Depende da biblioteca do Google Play Services no aparelho do usuário.

↩ Promise<{ text, format, cancelled }>
const qr = await escanearQRCode(); if (qr) console.log(qr.text);
ocr(imagem) recognizeText()

Reconhece texto numa imagem usando ML Kit local (offline).

Por que usar?

Extrai texto de documentos, RG, placas, 100% offline.

Como usar / Dicas

Passe a imagem e receba strings prontas sem precisar de APIs pagas na nuvem.

Atenção / Cuidados

Textos escritos à mão ou rasurados podem ter baixa precisão.

imagem
↩ Promise<{ texto, blocos }>
const resultado = await ocr(foto); console.log(resultado.texto);
capturarTela() captureScreen()

Captura a tela atual do WebView e retorna como Data URL.

Por que usar?

Para funções de "Salvar Comprovante" ou "Compartilhar meu Perfil".

Como usar / Dicas

Chame a função e receba a string base64 da tela atual (sem barras nativas do Android).

Atenção / Cuidados

Não captura conteúdos protegidos por DRM (ex: reprodutores de filmes).

↩ Promise<{ dataUrl }>
const print = await capturarTela(); img.src = print.dataUrl;

Arquivos & Storage

Salve, leia, compartilhe e gerencie arquivos dentro do app ou na galeria.

salvarArquivo(nome, dados) saveFile()

Salva um arquivo no armazenamento do app. Ou abre o seletor nativo usando formato de objeto.

Por que usar?

Salvar dados no armazenamento interno ou abrir a tela nativa para salvar em Downloads.

Como usar / Dicas

Para internal storage, use salvarArquivo("a.txt", "dado"). Para tela nativa, passe objeto com "conteudo".

Atenção / Cuidados

Arquivos internos são apagados se o usuário limpar os dados do app.

nome/opcoesconteudo
↩ Promise<{ uri }>
await salvarArquivo("perfil.json", { nome: "Ana", plano: "premium" });
lerArquivo(nome) readFile()

Lê um arquivo salvo no app. Retorna o conteúdo parseado.

Por que usar?

Recuperar o estado offline salvo no armazenamento interno do app.

Como usar / Dicas

Basta passar o nome exato que foi salvo anteriormente.

Atenção / Cuidados

Lança erro se o arquivo não existir. Use arquivoExiste() antes.

nome
↩ Promise
const perfil = await lerArquivo("perfil.json"); console.log(perfil.nome);
listarArquivos() listFiles()

Lista todos os arquivos salvos no armazenamento do app.

Por que usar?

Para criar um gerenciador de downloads ou painel de arquivos offlines dentro do app.

Como usar / Dicas

Retorna um array com o nome, tamanho e data de todos os arquivos internos.

Atenção / Cuidados

Só lista a pasta privativa do aplicativo, não lista a galeria do usuário.

↩ Promise
const arquivos = await listarArquivos();
excluirArquivo(nome) deleteFile()

Exclui um arquivo do armazenamento do app.

Por que usar?

Liberar espaço de disco removendo caches ou relatórios antigos.

Como usar / Dicas

Passe o nome do arquivo interno.

Atenção / Cuidados

Ação irreversível.

nome
↩ Promise
await excluirArquivo("perfil.json");
escolherArquivo(opcoes?) pickFile()

Abre o seletor de arquivos do Android.

Por que usar?

Permite que o usuário envie PDFs, documentos e planilhas para o seu sistema.

Como usar / Dicas

Use os filtros de MIME type para forçar apenas a seleção de PDFs, por exemplo.

Atenção / Cuidados

Retorna URI nativa. Use o FormData ou base64 para enviar via fetch.

tipos?multiplo?
↩ Promise<{ uri, nome, mimeType, tamanho }>
const pdf = await escolherArquivo({ tipos: ["application/pdf"] });
escolherImagem() pickImage()

Abre o Photo Picker (Android 13+) ou galeria.

Por que usar?

Seleção de avatares com a moderna interface nativa do Photo Picker.

Como usar / Dicas

Retorna foto selecionada da galeria.

Atenção / Cuidados

Garante privacidade no Android 13+, não pedindo acesso total a todos os arquivos.

↩ Promise<{ uri, nome, mimeType, tamanho }>
const img = await escolherImagem();
baixarArquivo(url, nome) downloadFile()

Baixa um arquivo da web e salva no app. Mostra progresso na notificação.

Por que usar?

Baixar boletos, PDFs ou vídeos mostrando barra de progresso na notificação nativa.

Como usar / Dicas

Passe a URL e o nome do arquivo.

Atenção / Cuidados

Se a permissão de notificações (POST_NOTIFICATIONS) for negada, o download acontece silenciosamente.

urlnomegaleria?
↩ Promise<{ uri }>
await baixarArquivo("https://exemplo.com/relatorio.pdf", "relatorio.pdf");
compartilhar(opcoes) share()

Abre o menu de compartilhamento do Android com texto, link ou arquivo.

Por que usar?

Promove a viralidade do app (enviar links, textos ou imagens para outras redes).

Como usar / Dicas

Abre o menu (Share Sheet) oficial do Android.

Atenção / Cuidados

O design da tela de compartilhamento varia conforme a fabricante do celular.

titulo?texto?url?arquivo?
↩ Promise<{ ok }>
await compartilhar({ titulo: "Confira!", texto: "Veja esse conteúdo", url: "https://exemplo.com" });
lerArquivoCompleto(nome) readFileInfo()

Lê um arquivo com todos os metadados: uri, mimeType, nome, tamanho e tipo (imagem/video/audio/documento).

Por que usar?

Inspecionar tamanho, tipo MIME real e metadados de um arquivo interno.

Como usar / Dicas

Retorna um objeto enriquecido (ex: saber se é imagem ou vídeo).

Atenção / Cuidados

Útil antes de tentar fazer uploads para limitar tamanhos de anexos.

nome
↩ Promise<{ uri, mimeType, name, nome, size, tamanho, type, tipo }>
const info = await lerArquivoCompleto("foto.png"); console.log(info.mimeType, info.tamanho);
arquivoExiste(nome) fileExists()

Verifica se um arquivo existe no armazenamento do app.

Por que usar?

Evita erros de "File Not Found" ao tentar ler dados offlines.

Como usar / Dicas

Retorna um booleano simples.

Atenção / Cuidados

Verifique sempre antes de ler arquivos pesados.

nome
↩ Promise
const existe = await arquivoExiste("perfil.json"); if (!existe) await salvarArquivo("perfil.json", {});
abrirArquivo(nome) openFile()

Abre um arquivo salvo no app com o app padrão do Android (PDF no leitor, imagem na galeria, etc).

Por que usar?

Abrir PDFs, planilhas ou vídeos no aplicativo nativo padrão do usuário (ex: visualizador de PDF).

Como usar / Dicas

Passe o nome do arquivo interno.

Atenção / Cuidados

Se o usuário não tiver um app compatível instalado, o Android lançará um erro silencioso.

nome
↩ Promise
await abrirArquivo("relatorio.pdf");
compartilharArquivo(nome) shareFile()

Compartilha um arquivo salvo no app via menu nativo do Android.

Por que usar?

Compartilhar um arquivo salvo internamente no WhatsApp, E-mail, etc.

Como usar / Dicas

Passe o nome interno. A bridge gera um FileProvider seguro e passa para a Intent.

Atenção / Cuidados

Não é possível compartilhar pastas, apenas arquivos únicos.

nome
↩ Promise<{ ok }>
await compartilharArquivo("relatorio.pdf");
escolherArquivos(opcoes) pickFiles()

Abre o seletor para múltiplos arquivos.

Por que usar?

Fazer upload de múltiplos anexos de uma vez só.

Como usar / Dicas

Ativa a seleção múltipla no seletor do sistema.

Atenção / Cuidados

Retorna array. Pode estourar a memória se o usuário escolher 50 vídeos pesados.

multiplo?tipos?
↩ Promise>
const arquivos = await escolherArquivos({ multiplo: true }); console.log(arquivos.length, "arquivos selecionados");
escolherImagens(opcoes) pickImages()

Abre o Photo Picker para múltiplas imagens (Android 13+).

Por que usar?

Criar galerias, álbuns ou enviar múltiplas fotos pro servidor.

Como usar / Dicas

Usa o seletor focado em imagens.

Atenção / Cuidados

No Android moderno, roda isolado para garantir a privacidade da galeria.

multiplas?
↩ Promise>
const fotos = await escolherImagens({ multiplas: true }); fotos.forEach(f => console.log(f.nome));
baixarBase64(nome, base64, opcoes) downloadBase64()

Salva dados base64 como arquivo. Útil para salvar imagens geradas no canvas.

Por que usar?

Salvar no celular do usuário imagens geradas dinamicamente via Canvas do HTML.

Como usar / Dicas

Envie a string Base64 e o nome do arquivo. Pode ser salvo na galeria se configurado.

Atenção / Cuidados

Strings Base64 muito longas travam a RAM do WebView. Evite usar para vídeos grandes.

nomebase64mimeType?galeria?
↩ Promise<{ uri, publicUri? }>
await baixarBase64("foto.png", base64String, { mimeType: "image/png", galeria: true });
baixarArquivoLocal(arquivo, nome) downloadLocalFile()

Copia um arquivo (de escolherArquivo) para o armazenamento do app com notificação de progresso.

Por que usar?

Copia um arquivo que o usuário escolheu (via escolherArquivo) para o armazenamento privativo do app.

Como usar / Dicas

Passa a URI nativa recebida e copia byte a byte.

Atenção / Cuidados

Gera uma notificação de cópia. Útil para guardar documentos importantes offline.

arquivonome
↩ Promise<{ uri }>
const arquivo = await escolherArquivo(); if (arquivo) { await baixarArquivoLocal(arquivo, "copia-" + arquivo.name); }
infoArmazenamento() storageInfo()

Retorna informações de espaço em disco disponível.

Por que usar?

Verificar se há espaço livre no celular antes de iniciar um download gigante.

Como usar / Dicas

Retorna total e disponível em bytes.

Atenção / Cuidados

Valores aproximados do disco interno do aparelho.

↩ Promise<{ total, available, used }>
const espaco = await infoArmazenamento(); console.log("Disponível:", espaco.available);

Áudio & Voz

Grave áudio, sintetize voz, reconheça fala e controle o volume do dispositivo.

ouvirMic() startMic()

Inicia a gravação de áudio pelo microfone. Solicita permissão automaticamente.

Por que usar?

Permitir gravação de áudio contínua (ex: botão de gravar áudio no chat).

Como usar / Dicas

Chame para iniciar a gravação nativa e liberar a interface do seu app.

Atenção / Cuidados

Exige permissão RECORD_AUDIO. Não esqueça de tratar quando o usuário negar.

↩ Promise<{ recording, settingsOpened }>
await ouvirMic(); // ... Quando quiser parar: const audio = await pararMic();
pararMic() stopMic()

Para a gravação e retorna o áudio em base64.

Por que usar?

Encerrar a gravação iniciada por ouvirMic() e receber o arquivo de áudio.

Como usar / Dicas

Retorna base64 e dados do arquivo mp4/m4a gerado.

Atenção / Cuidados

Gera Base64. Em áudios muito longos, considere usar APIs de envio fracionado.

↩ Promise<{ base64, mimeType, durationMs }>
const audio = await pararMic(); const player = new Audio(`data:${audio.mimeType};base64,${audio.base64}`); player.play();
falar(texto, opcoes?) speak()

Fala o texto em voz alta usando o Text-to-Speech do Android.

Por que usar?

Acessibilidade ou assistentes virtuais dentro do app.

Como usar / Dicas

Sintetiza texto em voz humana através da API TextToSpeech.

Atenção / Cuidados

A qualidade da voz depende do pacote de voz instalado no Android do usuário.

textoidioma?velocidade?
↩ Promise
await falar("Olá mundo!", { idioma: "pt-BR", velocidade: 1 });
ouvir(opcoes?) speechToText()

Ativa o reconhecimento de voz e transcreve o áudio.

Por que usar?

Digitação por voz para agilizar o preenchimento de formulários longos ou buscas.

Como usar / Dicas

Abre o prompt do Google e converte fala em texto (SpeechToText).

Atenção / Cuidados

Pode precisar de conexão com a internet para ser preciso.

idioma?
↩ Promise<{ texto, error }>
const voz = await ouvir({ idioma: "pt-BR" }); console.log(voz.texto);
volumeAtual() getVolume()

Retorna os volumes atuais e máximos do dispositivo.

Por que usar?

Verificar se o celular está no silencioso antes de tocar um aviso importante.

Como usar / Dicas

Lê o volume do canal de Mídia, Alarme e Toque.

Atenção / Cuidados

Alguns aparelhos bloqueiam a leitura precisa em certos modos DND.

↩ Promise<{ midia, toque, alarme }>
const vol = await volumeAtual(); console.log(vol.midia.atual, vol.midia.maximo);
definirVolume(stream, porcentagem) setVolume()

Ajusta o volume de um stream (midia, toque, alarme).

Por que usar?

Forçar o volume a subir caso o app seja um player de música/vídeo.

Como usar / Dicas

Define o volume para a porcentagem especificada.

Atenção / Cuidados

Pode assustar o usuário se for feito bruscamente.

streamporcentagemmostrarUI?
↩ Promise
await definirVolume("midia", 0.5, { mostrarUI: true });
pararFala() stopSpeech()

Para a fala TTS em andamento.

Por que usar?

Interromper uma leitura longa em áudio (TextToSpeech) se o usuário mudar de tela.

Como usar / Dicas

Cancela imediatamente o áudio sintético ativo.

Atenção / Cuidados

Seguro de chamar a qualquer momento.

↩ Promise
await falar("Texto longo..."); // Interromper: await pararFala();

Localização & Sensores

GPS, velocímetro, NFC, proximidade, acelerômetro e orientação do aparelho.

obterLocalizacao(opcoes?) getLocation()

Obtém a posição GPS atual. Solicita permissão automaticamente.

Por que usar?

Aplicativos de entrega, geofencing, check-ins ou busca por proximidade.

Como usar / Dicas

Força uma leitura instantânea. Use altaPrecisao: true para forçar o GPS (chip).

Atenção / Cuidados

Pede permissão ACCESS_FINE_LOCATION. Retorna nulo se bloqueado.

altaPrecisao?timeoutMs?
↩ Promise<{ latitude, longitude, precisao, velocidadeKmh }>
const local = await obterLocalizacao({ altaPrecisao: true }); console.log(local.latitude, local.longitude);
acompanharLocalizacao(opcoes?) watchLocation()

Inicia o monitoramento contínuo da posição GPS.

Por que usar?

Para apps de corrida (Uber) ou rastreamento em tempo real.

Como usar / Dicas

Inicia um monitoramento que continua disparando callbacks.

Atenção / Cuidados

Consome a bateria vorazmente se o intervalo for muito curto.

intervaloMs?
↩ Promise<{ watchId }>
const watch = await acompanharLocalizacao({ intervaloMs: 5000 });
medirVelocidade(callback) measureSpeed()

Monitora a velocidade em km/h em tempo real via GPS.

Por que usar?

Apps de esporte ou alertas de limite de velocidade.

Como usar / Dicas

Lê o deslocamento de GPS em km/h e dispara atualizações.

Atenção / Cuidados

Pode ser impreciso em túneis e subsolos.

callback(kmh, local)
↩ Promise
const parar = await medirVelocidade((kmh, local) => { console.log(`Velocidade: ${kmh} km/h`); });
aoSacudirCelular(callback) onPhoneShake()

Dispara quando o celular é sacudido com força.

Por que usar?

Gatilho criativo (ex: "Sacuda o celular para desfazer" ou revelar prêmios).

Como usar / Dicas

Ativa o acelerômetro e emite evento ao detectar força brusca.

Atenção / Cuidados

Pode disparar se o celular estiver num bolso solto durante uma corrida.

callback(dados)
↩ Function (cancelar)
aoSacudirCelular((dados) => { console.log("Sacudiu!", dados.forca); });
aoNFC(callback) onNFC()

Escuta tags NFC quando o app está em primeiro plano.

Por que usar?

Check-in de eventos, leitura de cartões de acesso ou crachás de funcionários.

Como usar / Dicas

Quando o app estiver aberto e um NFC encostar, o callback dispara os dados da tag.

Atenção / Cuidados

Apenas para leitura de payload NDEF. O Android bloqueia se o app estiver minimizado.

callback(dados)
↩ Function (cancelar)
aoNFC((dados) => { console.log("Tag NFC", dados.id, dados.mensagens); });
aoAproximarObjeto(callback) onProximityNear()

Dispara quando o sensor de proximidade detecta algo perto.

Por que usar?

Pausar vídeos quando o usuário vira a tela para baixo ou encosta o rosto na tela (escutar áudio).

Como usar / Dicas

Lê o sensor de proximidade (o mesmo de ligações) e retorna a distância.

Atenção / Cuidados

Normalmente retorna apenas "Perto" (0) ou "Longe" (5).

callback(dados)
↩ Function (cancelar)
aoAproximarObjeto((dados) => { console.log("Distância:", dados.distancia); });

Conectividade

Bluetooth, WiFi local entre dispositivos, deep links e redes.

procurarBT() scanBluetooth()

Busca dispositivos Bluetooth pareados ou visíveis.

Por que usar?

Descobrir impressoras térmicas, balanças ou outros apps pareados.

Como usar / Dicas

Busca ativa via rádio Bluetooth Clássico.

Atenção / Cuidados

Pode disparar o popup de permissão "Conectar dispositivos próximos" no Android 12+.

↩ Promise<[{ id, nome, host }]>
const dispositivos = await procurarBT();
conectarBT(id) connectBluetooth()

Conecta a um dispositivo Bluetooth encontrado.

Por que usar?

Estabelecer vínculo via Socket Bluetooth com o aparelho alvo.

Como usar / Dicas

Cria uma sala P2P (RFCOMM).

Atenção / Cuidados

O dispositivo destino precisa estar escutando na mesma interface.

id
↩ Promise
await conectarBT(dispositivos[0].id);
enviarBT(dados) sendBluetooth()

Envia dados JSON para o dispositivo conectado via Bluetooth.

Por que usar?

Enviar ordens de impressão (JSON/Texto) ou sincronizar dados offline via Bluetooth.

Como usar / Dicas

Dispara um objeto JSON que cai direto no `aoReceberDadosBT` do outro celular.

Atenção / Cuidados

O dado passa por serialização. Evite enviar imagens gigantes (limite de banda).

dados
↩ Promise
await enviarBT({ mensagem: "Olá por BT" });
procurarWiFi() scanWiFi()

Busca dispositivos na rede local via NSD (mesma rede WiFi).

Por que usar?

Localizar outros usuários do seu app no mesmo escritório ou rede local Wi-Fi.

Como usar / Dicas

Usa descoberta de serviço NSD nativa.

Atenção / Cuidados

Funciona apenas na mesma rede (Roteador/Hotspot). Rede corporativa pode bloquear o mDNS.

↩ Promise<[{ id, nome, host, porta }]>
const dispositivos = await procurarWiFi();
conectarWiFi(id) connectWiFi()

Conecta a um dispositivo WiFi local encontrado.

Por que usar?

Criar um canal direto via IP/Porta (Socket TCP local).

Como usar / Dicas

Estabelece a conexão contínua de baixa latência.

Atenção / Cuidados

Conexão cai se os aparelhos se afastarem ou trocarem de rede.

id
↩ Promise
await conectarWiFi(dispositivos[0].id);
enviarWiFi(dados) sendWiFi()

Envia dados JSON para o dispositivo conectado via WiFi local.

Por que usar?

Trocar arquivos pesados ou jogos multiplayer offline no mesmo Wi-Fi.

Como usar / Dicas

Envia pacotes TCP.

Atenção / Cuidados

Mais rápido que o Bluetooth, mas restrito ao roteador local.

dados
↩ Promise
await enviarWiFi({ mensagem: "Olá por WiFi" });
obterLinkInicial() getInitialLink()

Retorna o deep link que abriu o app (se houver).

Por que usar?

Saber qual URL / Rota chamou o app se o usuário abriu ele clicando em um link na web.

Como usar / Dicas

Verifica o Intent de inicialização. Use para redirecionar o usuário para o produto certo.

Atenção / Cuidados

Links de indicação (referral) geralmente vêm por aqui.

↩ Promise
const link = await obterLinkInicial(); if (link) console.log("Abriu via:", link);
aoConectarBT(callback) onBluetoothConnect()

Dispara quando um dispositivo Bluetooth se conecta ao seu app (modo Host P2P).

Por que usar?

Notificar sua tela quando a maquininha ou outro app se ligar ao seu Host Bluetooth.

Como usar / Dicas

Emite o ID e nome do aparelho.

Atenção / Cuidados

Só dispara se você ativou o servidor Bluetooth implícito (automático).

callback(dispositivo)
↩ Function (cancelar)
aoConectarBT((dispositivo) => { console.log("Conectado:", dispositivo.nome); });
aoReceberDadosBT(callback) onBluetoothData()

Dispara quando recebe dados JSON via Bluetooth de outro dispositivo.

Por que usar?

Onde caem as mensagens de rádio. O coração do chat offline.

Como usar / Dicas

Recebe o payload JSON processado.

Atenção / Cuidados

Use switch/cases baseados no campo "tipo" do objeto para rotear a lógica.

callback(dados)
↩ Function (cancelar)
aoReceberDadosBT((dados) => { console.log("Recebido:", dados); });
aoDarErroBT(callback) onBluetoothError()

Dispara quando ocorre um erro na conexão Bluetooth.

Por que usar?

Interromper loaders na tela quando o pareamento Bluetooth falha.

Como usar / Dicas

Avisa quando a antena desconectou ou perdeu sinal.

Atenção / Cuidados

Não exibe avisos pro usuário automaticamente, trate você mesmo.

callback(erro)
↩ Function (cancelar)
aoDarErroBT((erro) => { console.log("Erro BT:", erro.mensagem); });
aoConectarWiFi(callback) onWiFiConnect()

Dispara quando um dispositivo se conecta via WiFi local.

Por que usar?

Aviso de conexão para salas locais (Wi-Fi).

Como usar / Dicas

Avisa quando outro socket chegou.

Atenção / Cuidados

Redes públicas podem isolar clientes (AP Isolation), impedindo a conexão.

callback(dispositivo)
↩ Function (cancelar)
aoConectarWiFi((dispositivo) => { console.log("WiFi conectado:", dispositivo.nome); });
aoReceberDadosWiFi(callback) onWiFiData()

Dispara quando recebe dados JSON via WiFi local.

Por que usar?

Ler as mensagens do socket TCP local.

Como usar / Dicas

Exatamente igual ao BT, mas com latência muito menor.

Atenção / Cuidados

Requer que a conexão não tenha se fechado.

callback(dados)
↩ Function (cancelar)
aoReceberDadosWiFi((dados) => { console.log("Recebido WiFi:", dados); });
aoDarErroWiFi(callback) onWiFiError()

Dispara quando ocorre um erro na conexão WiFi local.

Por que usar?

Capturar quando o outro celular sai do alcance do Wi-Fi.

Como usar / Dicas

Notifica falha na escrita ou leitura TCP.

Atenção / Cuidados

Limpe suas variáveis de "Conectado" ao receber este evento.

callback(erro)
↩ Function (cancelar)
aoDarErroWiFi((erro) => { console.log("Erro WiFi:", erro.mensagem); });
aoAbrirLink(callback) onDeepLink()

Dispara quando o app recebe um deep link enquanto já está aberto.

Por que usar?

Receber Deep Links em tempo real enquanto o app já está minimizado ou em uso.

Como usar / Dicas

Quando o usuário clica num link no WhatsApp e seu app acorda e volta para a frente.

Atenção / Cuidados

Substitua a tela atual do WebView caso o link seja uma navegação.

callback(link)
↩ Function (cancelar)
aoAbrirLink((link) => { console.log("Link recebido:", link.url); });

Interface Nativa

Controle de tema, tela, fullscreen, ícone flutuante, lanterna e clipboard.

toast(mensagem) toast()

Exibe uma mensagem rápida (toast nativo do Android).

Por que usar?

Alerta rápido sem interromper ou bloquear a tela do usuário.

Como usar / Dicas

Exibe aquela bolha preta inferior característica do Android.

Atenção / Cuidados

Se você enfileirar 10 toasts seguidos, o Android exibirá um de cada vez lentamente.

mensagem
↩ void
toast("Operação concluída!");
vibrar(ms) vibrate()

Vibra o aparelho pela duração em milissegundos.

Por que usar?

Feedback tátil ao clicar botões ou para alertar erros visuais.

Como usar / Dicas

Passe o tempo em milissegundos.

Atenção / Cuidados

O usuário pode ter a vibração desligada a nível de sistema.

duracaoMs
↩ void
vibrar(250);
lanterna(ligar) flashlight()

Liga ou desliga o flash/lanterna do aparelho.

Por que usar?

Apps de utilidade, inspeção de obras ou leitura noturna.

Como usar / Dicas

Passe true para ligar e false para desligar o LED traseiro.

Atenção / Cuidados

A permissão de CÂMERA é exigida pelo hardware do Android para acessar o flash.

ligar (boolean)
↩ Promise<{ status }>
await lanterna(true);
definirCorTema(cor) setThemeColor()

Altera a cor da barra de status e navegação do Android em tempo real.

Por que usar?

Adequar a barra superior (status bar) à cor de fundo da sua tela atual.

Como usar / Dicas

Passe qualquer cor em HEX.

Atenção / Cuidados

O contraste do relógio será preto ou branco automaticamente baseado na claridade.

cor (hex)
↩ Promise
await definirCorTema("#FF5722");
fullscreen(ativar) fullscreen()

Ativa ou desativa o modo tela cheia.

Por que usar?

Jogos, reprodutores de vídeo ou experiências imersivas (esconder relógio e bateria).

Como usar / Dicas

Ative ao abrir um vídeo e desative ao fechar.

Atenção / Cuidados

Em aparelhos com Notch ou recortes, pode gerar comportamentos visuais de borda.

ativar (boolean)
↩ void
fullscreen(true);
manterTelaLigada(ativar) keepScreenOn()

Impede que a tela se apague automaticamente.

Por que usar?

Impedir a tela de apagar durante leituras de receitas, painéis de senha ou dashboards.

Como usar / Dicas

Ativa a flag nativa Wakelock do Android.

Atenção / Cuidados

Gasta bateria intensa. Desligue quando o usuário sair dessa tela específica.

ativar (boolean)
↩ Promise
await manterTelaLigada(true);
brilhoTela(valor) setScreenBrightness()

Ajusta o brilho da tela (0 a 1).

Por que usar?

Forçar brilho máximo ao exibir um QR Code para maquininhas lerem mais fácil.

Como usar / Dicas

Entre 0.0 (escuro) e 1.0 (claro).

Atenção / Cuidados

Substitui o brilho automático do usuário momentaneamente.

valor (0-1)
↩ Promise
await brilhoTela(0.8);
copiarTexto(texto) copyText()

Copia o texto para a área de transferência.

Por que usar?

Botões "Copiar Pix", links de afiliados ou chaves de segurança.

Como usar / Dicas

Injeta o texto na área de transferência (Clipboard).

Atenção / Cuidados

No Android 13+, o sistema exibe sozinho um popup "Copiado para a área de transferência".

texto
↩ Promise
await copiarTexto("codigo-abc-123");
iniciarIconeFlutuante(opcoes?) startFloatingIcon()

Exibe um ícone flutuante do app sobre outros apps.

Por que usar?

Permite que seu app fique sobre outros apps como um botão rápido.

Como usar / Dicas

Útil para assistentes em tela, drivers, ou ferramentas de sobreposição.

Atenção / Cuidados

A permissão SYSTEM_ALERT_WINDOW é vista como perigosa pelo Google e não é concedida por padrão.

opacidade?
↩ Promise
await iniciarIconeFlutuante({ opacidade: 0.85 });
aguardar(ms) loading()

Cria uma pausa com Promise para usar com await, sem travar a WebView.

Por que usar?

Pausar fluxos assíncronos (promessas) sem travar a interface da tela.

Como usar / Dicas

Use como "await aguardar(3000)" para fazer uma pausa limpa de 3 segundos.

Atenção / Cuidados

Melhor e mais fluido do que fazer um loop cego ou setTimeout aninhado.

ms
↩ Promise
await toast("Começando..."); await aguardar(3000); await toast("Pronto!");
alternarLanterna() toggleFlashlight()

Alterna o estado da lanterna (liga se desligada, desliga se ligada).

Por que usar?

Um botão simples de "Liga/Desliga" sem precisar saber o estado anterior.

Como usar / Dicas

Chama e inverte o estado do Flash LED.

Atenção / Cuidados

Mesmas regras da função "lanterna" original.

↩ Promise<{ enabled }>
const status = await alternarLanterna(); console.log("Lanterna ligada?", status.enabled);
definirOpacidadeIconeFlutuante(valor) setFloatingIconOpacity()

Ajusta a opacidade do ícone flutuante em tempo real.

Por que usar?

Deixar a bolha translúcida quando não está sendo usada ativamente.

Como usar / Dicas

0.0 (invisível) a 1.0 (sólido).

Atenção / Cuidados

Ícones invisíveis podem irritar usuários se ficarem cobrindo botões de outros apps.

valor (0-1)
↩ Promise
await definirOpacidadeIconeFlutuante(0.55);
lerTextoCopiado() readClipboard()

Lê o texto que está na área de transferência.

Por que usar?

Detectar códigos de convite, links de indicação colados no clipboard ou auto-preencher SMS.

Como usar / Dicas

Puxa a string atual.

Atenção / Cuidados

O Android emite um alerta de privacidade avisando ao usuário que seu app leu a área de transferência.

↩ Promise
const texto = await lerTextoCopiado(); console.log("Copiado:", texto);

Segurança & Biometria

Autenticação biométrica, bloqueio de tela, storage seguro e sessões.

autenticarBiometria(opcoes) authenticateBiometric()

Solicita autenticação por impressão digital ou reconhecimento facial.

Por que usar?

Evitar que curiosos mexam na carteira, senhas ou chats privados do usuário logado.

Como usar / Dicas

Ao exibir a tela confidencial, bloqueie o JS e espere a Promise da biometria retornar "true".

Atenção / Cuidados

Trate aparelhos sem biometria exibindo fallback (senha em tela de login).

titulodescricao
↩ Promise<{ authenticated, supported, canceled }>
const bio = await autenticarBiometria({ titulo: "Confirmar acesso", descricao: "Use sua biometria" }); if (bio.authenticated) { /* acesso ok */ }
solicitarBloqueio(opcoes) requestDeviceLock()

Pede a senha de tela / PIN / padrão do aparelho.

Por que usar?

Exibir a tela de Pin/Padrão nativa do Android para ações irreversíveis (Ex: Deletar conta).

Como usar / Dicas

Invoca a segurança máxima de fábrica do aparelho.

Atenção / Cuidados

Usuários sem senha no celular irão falhar silenciosamente.

titulodescricao
↩ Promise<{ autenticado, suportado, cancelado }>
const auth = await solicitarBloqueio({ titulo: "Área Restrita", descricao: "Confirme sua senha de tela" });
salvarSeguro(chave, valor) saveSecure()

Salva um dado criptografado no armazenamento seguro do Android.

Por que usar?

Criptografar tokens JWT e chaves de APIs no Keystore de segurança máxima do Android.

Como usar / Dicas

Substitui o "localStorage" inseguro para dados financeiros.

Atenção / Cuidados

A chave será vinculada ao sistema. Se o celular for formatado, os dados somem para sempre.

chavevalor
↩ Promise
await salvarSeguro("token", "jwt-abc-123");
lerSeguro(chave) readSecure()

Lê um dado do armazenamento seguro criptografado.

Por que usar?

Resgatar as chaves privadas ao abrir o app e refazer as requisições autenticadas.

Como usar / Dicas

Descriptografa nativamente e injeta de volta na memória do WebView.

Atenção / Cuidados

Seguro contra root e extração de APK por hackers casuais.

chave
↩ Promise
const token = await lerSeguro("token");
salvarNaSessao(chave, valor) sessionSet()

Salva um dado na sessão (persiste até o app ser fechado).

Por que usar?

Dados que devem sumir quando o usuário limpa a memória RAM ou dá "Force Close".

Como usar / Dicas

Variável nativa persistida via memória.

Atenção / Cuidados

Não sobrevive a reinícios do sistema.

chavevalor
↩ Promise
await salvarNaSessao("sessaoAtiva", "true");
instalarAtualizacao(url, opcoes?) installUpdate()

Baixa e instala um APK de atualização (OTA). Mostra modal de progresso.

Por que usar?

Distribuir atualizações secretas (betas) fora das regras burocráticas da Play Store.

Como usar / Dicas

Baixa o arquivo e joga para o Android Package Installer.

Atenção / Cuidados

O link do APK deve ser direto. Links do Google Drive costumam ter redirecionamento que quebram o instalador.

urltitulo?mensagem?
↩ Promise
await instalarAtualizacao("https://servidor.com/app.apk", { titulo: "Atualizando...", mensagem: "Não feche o app" });
solicitarPermissaoInstalacao() requestInstallPermission()

Solicita permissão para instalar APKs (Android 8+). Abre a tela nativa de configurações.

Por que usar?

Apps não podem mais instalar outros apps sem que o usuário permita explicitamente (Android 8+).

Como usar / Dicas

Abre a tela nativa "Permitir desta fonte" para que a instalação do OTA passe livremente.

Atenção / Cuidados

Invoque essa função antes de começar o download longo.

↩ Promise<{ suportado, solicitado, permitido }>
const perm = await solicitarPermissaoInstalacao(); if (perm.permitido) { await instalarAtualizacao("https://site.com/app.apk"); }
solicitarPermissaoArmazenamento() requestStoragePermission()

Solicita acesso completo a arquivos (Android 11+). Em versões anteriores, usa popup tradicional.

Por que usar?

Acesso forçado a todas as pastas (Android 11+). Gerenciadores de Arquivos ou Anti-Vírus precisam disso.

Como usar / Dicas

Joga o usuário pra tela avançada de acesso restrito de arquivos.

Atenção / Cuidados

A Play Store frequentemente REJEITA apps que usem essa permissão se não for o core business deles.

↩ Promise<{ permission, granted, requiresSettings, requested, settingsOpened }>
const perm = await solicitarPermissaoArmazenamento(); if (perm.granted) { console.log("Acesso liberado!"); }
statusPermissaoArmazenamento() storagePermissionStatus()

Consulta silenciosamente se tem permissão de armazenamento, sem abrir tela.

Por que usar?

Consulta limpa se você já tem acesso total ou parcial ao disco.

Como usar / Dicas

Não abre nenhum pop-up.

Atenção / Cuidados

Apenas leitura (Booleano).

↩ Promise<{ granted }>
const status = await statusPermissaoArmazenamento(); console.log("Tem permissão?", status.granted);

Eventos do Sistema

Ouça eventos nativos do Android: ciclo do app, hardware, conectividade e mais.

aoEvento(nome, callback) onEvent()

Ouve qualquer evento nativo. Retorna uma função para cancelar a escuta.

Por que usar?

Interações genéricas (escutar BroadCasts).

Como usar / Dicas

Passe a string do BroadCast.

Atenção / Cuidados

Evite acumular dezenas de ouvintes não tratados.

nomecallback
↩ Function (cancelar)
const parar = aoEvento("app:background", (e) => { console.log("App saiu da frente"); }); // Para parar: parar();
aoMinimizar(callback) onMinimize()

Dispara quando o app vai para segundo plano.

Por que usar?

Momento exato de pausar vídeos ou mutar áudios para não tocar em segundo plano irritando o usuário.

Como usar / Dicas

Dispara quando o usuário vai pra tela de início (Home).

Atenção / Cuidados

O html2apk bloqueia falso-positivos se uma tela nativa do próprio app abriu por cima.

callback
↩ Function (cancelar)
aoMinimizar(() => console.log("Minimizou"));
aoConectarUSB(callback) onUSBConnect()

Dispara quando um cabo USB é conectado.

Por que usar?

Despertar telas de debug ou trancar a segurança de apps corporativos.

Como usar / Dicas

Dispara o evento quando a bateria e a porta de dados entram em uso.

Atenção / Cuidados

Nem todo carregador é identificado como porta de dados.

callback(dados)
↩ Function (cancelar)
aoConectarUSB((dados) => console.log("USB conectado", dados));
aoConectarFone(callback) onHeadphoneConnect()

Dispara quando um fone de ouvido é conectado.

Por que usar?

Retomar músicas ou ajustar painéis de players de mídia quando o headset for plugado.

Como usar / Dicas

Avisa sobre jacks de 3.5mm e Bluetooth P2P media audio.

Atenção / Cuidados

Muitos usuários removem fones brutalmente. Não force Playback automático sem testar bem.

callback(dados)
↩ Function (cancelar)
aoConectarFone((dados) => console.log("Fone:", dados.dispositivo));
aoMudarVolume(callback) onVolumeChange()

Dispara quando o volume é alterado.

Por que usar?

Ajustar as barras de progresso virtuais do seu app sem polling.

Como usar / Dicas

Dispara ao apertar os botões físicos laterais do Android.

Atenção / Cuidados

Algumas fabricantes mascaram a interceptação de botões físicos.

callback(dados)
↩ Function (cancelar)
aoMudarVolume((dados) => console.log("Volume:", dados.midia.atual));
aoAbrirTeclado(callback) onKeyboardOpen()

Dispara quando o teclado virtual aparece.

Por que usar?

Subir (scroll) botões de salvar em formulários para que o teclado não os esconda.

Como usar / Dicas

Detecta encolhimentos no Layout Window do Android.

Atenção / Cuidados

Retorna a altura do teclado. O evento de fechar terá altura zero.

callback(dados)
↩ Function (cancelar)
aoAbrirTeclado((d) => console.log("Teclado:", d.alturaTeclado));
aoTirarPrint(callback) onScreenshot()

Dispara quando o usuário tira um print da tela.

Por que usar?

Prevenção e segurança bancária. Avisar que o PIX foi salvo ou gerar log de fraude.

Como usar / Dicas

Ouve a criação de arquivos de tela temporários pelo sistema.

Atenção / Cuidados

Não impede o print nativamente (use as flags de segurança pra impedir de fato).

callback(dados)
↩ Function (cancelar)
aoTirarPrint((dados) => console.log("Print!", dados.uri));
aoVoltarParaApp(callback) onResume()

Dispara quando o usuário volta ao app após ter saído. O html2apk suprime falsos positivos de telas nativas bloqueantes.

Por que usar?

Atualizar cotações de bolsa ou feed do Instagram sem o usuário pedir, após ele passar 5h no WhatsApp.

Como usar / Dicas

Dispara quando a tela ganha foco primário novamente.

Atenção / Cuidados

As conexões Socket WebSocket morrem em background. Use este evento para reconectar automaticamente!

callback
↩ Function (cancelar)
aoVoltarParaApp(() => { console.log("Bem-vindo de volta!"); carregarDadosAtualizados(); });

Sistema & Navegação

Informações do dispositivo, navegação, links externos e controle do app.

infoDispositivo() deviceInfo()

Retorna informações do aparelho (modelo, versão Android, etc).

Por que usar?

Estatísticas para analytics, rastreamento de crashes e painéis de administração corporativa.

Como usar / Dicas

Saber modelo, marca, build, RAM disponível e API do Android.

Atenção / Cuidados

O Google removeu leitura nativa de IMEI e MAC desde o Android 10 por privacidade.

↩ Promise<{ modelo, fabricante, versaoAndroid, ... }>
const info = await infoDispositivo();
infoBateria() batteryInfo()

Retorna o nível e status da bateria.

Por que usar?

Impedir início de atualizações longas ou processamentos em celulares prestes a desligar.

Como usar / Dicas

Retorna % e booleano de cabo plugado.

Atenção / Cuidados

Muito dependente da leitura do kernel do celular alvo.

↩ Promise<{ nivel, carregando }>
const bat = await infoBateria();
infoRede() networkInfo()

Retorna o status da conexão de rede.

Por que usar?

Avisar "Você está sem internet" elegantemente em vez de quebrar requisições `fetch` secas.

Como usar / Dicas

Identifica 4G, Wi-Fi ou Offline.

Atenção / Cuidados

Pode acusar Wi-Fi conectado mesmo se a rede/roteador estiver sem acesso pra fora da Intranet.

↩ Promise<{ conectado, tipo }>
const rede = await infoRede();
abrirNoApp(url) openInApp()

Navega para uma URL dentro do próprio WebView do APK.

Por que usar?

Roteamento forçado ou reset de sessão sem dar "F5" explícito.

Como usar / Dicas

Substitui a URL do WebView principal.

Atenção / Cuidados

Diferente de links SPA (`#/`), isso navega fisicamente as pastas (ex: `index.html`).

urlsubstituir?
↩ void
abrirNoApp("/sobre.html"); abrirNoApp("#/pedido/123");
abrirForaDoApp(url) openOutsideApp()

Abre uma URL no navegador padrão do Android.

Por que usar?

Enviar o usuário para páginas políticas, cobrança do pagseguro externa, PDFs gigantes de navegador.

Como usar / Dicas

Abre no Chrome/Opera do celular, fora do isolamento do app.

Atenção / Cuidados

Tira o foco do seu app. O usuário pode não voltar se se distrair.

url
↩ void
abrirForaDoApp("https://google.com");
minimizarApp() minimizeApp()

Minimiza o app (vai para segundo plano).

Por que usar?

Botões "Home" personalizados ou fluxo de segundo plano de reprodutor de rádio.

Como usar / Dicas

Emula o botão quadrado nativo enviando o app pro fundo.

Atenção / Cuidados

Causa o acionamento dos eventos "aoMinimizar".

↩ Promise
await minimizarApp();
fecharApp() exitApp()

Encerra o app completamente. Use com cuidado!

Por que usar?

Botões de saída de emergência ou deslogar brutalmente usuários bloqueados pelo banco de dados.

Como usar / Dicas

Mata a JVM da Activity nativa Android (System.exit/finish).

Atenção / Cuidados

Se você matar o app, conexões pendentes do banco ou WebSocket irão morrer pela metade e dados podem corromper.

↩ void
// Use somente após salvar estado! fecharApp();
definirPapelParede(imagem, opcoes?) setWallpaper()

Define um papel de parede (tela de início, bloqueio ou ambos).

Por que usar?

Apps de arte, temas ou wallpapers otimizados.

Como usar / Dicas

Define o plano de fundo do sistema usando uma imagem do seu app.

Atenção / Cuidados

Exige confirmação e suporte pelo launcher nativo da fabricante do telefone.

imagemalvo?
↩ Promise<{ applied }>
await definirPapelParede("wallpaper.jpg", { alvo: "inicio" });
abrirWhatsapp(numero, mensagem) openWhatsapp()

Abre o WhatsApp com número e mensagem pré-preenchidos.

Por que usar?

Encurta o caminho do suporte e venda direta do seu SaaS.

Como usar / Dicas

Abre a thread do WhatsApp passando a mensagem já preenchida.

Atenção / Cuidados

Sempre adicione o código do país (ex: 55) ao telefone.

numeromensagem?
↩ Promise
await abrirWhatsapp("5511999999999", "Oi, vim pelo app!");
discar(numero) dial()

Abre o discador do Android com o número preenchido.

Por que usar?

Atalhos diretos a frotistas, centrais de frete e telefone de resgate.

Como usar / Dicas

Cai no app "Telefone" nativo.

Atenção / Cuidados

Não completa a chamada. Apenas preenche. O usuário ainda tem que apertar o botão de ligar por segurança.

numero
↩ Promise
await discar("11999999999");
abrirMapa(endereco) openMap()

Abre o Google Maps com um endereço ou coordenadas.

Por que usar?

Abre o Google Maps/Waze no endereço exato de entrega da pizzaria.

Como usar / Dicas

Usa "geo: URI intent".

Atenção / Cuidados

Se tiver ambos Waze e Maps, o Android perguntará ao usuário qual usar.

endereco
↩ Promise
await abrirMapa("Avenida Paulista, São Paulo");
verificarPacote(nome) checkPackage()

Verifica se um app está instalado. Busca inteligente por nome ou packageId.

Por que usar?

Saber se seu parceiro instalou o seu app B ou A.

Como usar / Dicas

Inspeciona silenciosamente a lista de apps do celular.

Atenção / Cuidados

Android 11 exige a declaração de "QUERY_ALL_PACKAGES" para essa leitura não voltar falsa sempre.

nome
↩ Promise<{ exists, version, packageId, appName }>
const wpp = await verificarPacote("WhatsApp"); if (wpp.exists) console.log("v" + wpp.version);
abrirPacote(packageId) openPackage()

Abre outro app instalado no Android.

Por que usar?

Abre o YouTube, Instagram ou o app do Itaú por cima do seu.

Como usar / Dicas

Chama o packageId nativo (ex: com.whatsapp).

Atenção / Cuidados

Se o app não for achado, dá erro. Verifique antes usando verificarPacote.

packageId
↩ Promise<{ success }>
const r = await abrirPacote("com.whatsapp"); if (!r.success) toast("App não encontrado");
apontarArquivo(nome, extensao, abrir?) locateFile()

Encontra e aponta para um arquivo na pasta Downloads. Busca inteligente por palavra-chave.

Por que usar?

Achar um boleto ou APK que você mesmo baixou sem saber o nome exato.

Como usar / Dicas

O robô rastreia na pasta Downloads o arquivo com a extensão pedida.

Atenção / Cuidados

Só tem acesso a diretórios públicos.

nomeextensaoabrir?
↩ Promise<{ path, found }>
const f = await apontarArquivo("relatorio", "pdf", false); if (f.found) console.log(f.path);
instalarPacote(path) installPackage()

Abre a tela de instalação nativa do Android para um APK. Use "select" para abrir o seletor.

Por que usar?

Abre a UI nativa "Instalar App X? Cancelar / Instalar".

Como usar / Dicas

Se usar "select", abre o selecionador para o usuário apontar o APK.

Atenção / Cuidados

Maneira excelente de forçar um sideloading manual de atualizações gigantescas.

path
↩ Promise
await instalarPacote("select"); // Abre seletor // ou await instalarPacote(caminho.path); // Instala direto
statusPermissoes(array) permissionsStatus()

Consulta o status de múltiplas permissões sem solicitá-las.

Por que usar?

Verificar massivamente os requisitos de permissões da tela em um único bloco de código.

Como usar / Dicas

Retorna um json com "granted" para as permissões sem acionar Popups irritantes.

Atenção / Cuidados

Permite desabilitar botões na sua UI se não tiver acesso à câmera, antes de bugar.

permissoes[]
↩ Promise
const p = await statusPermissoes(["CAMERA", "RECORD_AUDIO"]); console.log(p);
aumentarVolume(stream, passos) volumeUp()

Aumenta o volume em N passos.

Por que usar?

Assistentes virtuais customizados ou equalizadores por código.

Como usar / Dicas

Sobe um degrau no mixer do Android.

Atenção / Cuidados

Não quebra limite máximo de hardware.

streampassos
↩ Promise
await aumentarVolume("midia", 1);
diminuirVolume(stream, passos) volumeDown()

Diminui o volume em N passos.

Por que usar?

Diminuir gradualmente em alertas noturnos.

Como usar / Dicas

Desce um degrau no mixer de volume.

Atenção / Cuidados

Limites físicos impostos pela placa mãe valem aqui.

streampassos
↩ Promise
await diminuirVolume("midia", 1);

Compartilhamento

Receba arquivos, textos e links compartilhados de outros apps e compartilhe o próprio APK.

compartilharApp() shareApp() / share_me()

Compartilha o próprio APK do app com outros.

Por que usar?

A estratégia suprema de marketing boca-a-boca. O usuário envia o APK instalável direto pro amigo via WhatsApp.

Como usar / Dicas

Puxa o arquivo fonte de si mesmo do /data/app e converte num anexo de WhatsApp.

Atenção / Cuidados

Pode não ter 100% de precisão caso a Play Store use App Bundles (onde ela fatia o código por resolução de tela).

↩ Promise<{ ok }>
await compartilharApp();
obterCompartilhamentoInicial() getInitialShare()

Retorna os dados do compartilhamento que abriu o app (se houver).

Por que usar?

Transformar seu app no recebedor de arquivos do usuário. (ex: "Compartilhar texto com o meu app de Notas").

Como usar / Dicas

Verifica no carregamento (Splash screen) se fomos abertos pelo menu de "Compartilhar".

Atenção / Cuidados

Pode vir vazio, null, em JSON. Trate a string ou o URI (caminho físico do arquivo).

↩ Promise<{ tipo, uri?, texto? }>
const share = await obterCompartilhamentoInicial(); if (share) console.log(share.tipo, share.uri);
aoReceberCompartilhamento(callback) onShareReceived()

Dispara quando o app recebe um compartilhamento de outro app enquanto já está aberto.

Por que usar?

Receber anexos do WhatsApp enviados de fora pra dentro (Seu app era a gaveta).

Como usar / Dicas

Dispara apenas quando a Activity já está na memória e foi acordada via "New Intent".

Atenção / Cuidados

É aqui que seu app "importa" a foto que o usuário abriu na galeria e apertou "Mandar para o AppForge".

callback(dados)
↩ Function (cancelar)
aoReceberCompartilhamento((dados) => { console.log(dados.tipo, dados.uri || dados.texto); });

Avançado & Background

Processamento em segundo plano, Widgets na tela inicial e Bolhas flutuantes (Overlay).

ativarSegundoPlano(opcoes) startBackgroundWorker()

Ativa o processamento persistente. O app continua executando JavaScript mesmo quando a tela é desligada ou o app é fechado/minimizador.

Por que usar?

Manter reprodução de música, GPS contínuo e envios massivos de dados rodando com o celular bloqueado ou tela desligada.

Como usar / Dicas

Avisa o kernel do Android para não matar a memória da sua WebView.

Atenção / Cuidados

Cria uma notificação imperdoável e irritante na barra de notificação avisando o usuário sobre o consumo. Use com respeito.

titulo?texto?
↩ Promise
await ativarSegundoPlano({ titulo: "Sincronizando...", texto: "Aguarde a finalização dos downloads." });
desativarSegundoPlano() stopBackgroundWorker()

Desativa o modo segundo plano, removendo a notificação fixa e permitindo o descanso do app.

Por que usar?

Finalizar amigavelmente seu ciclo longo sem sofrer interrupções ou penalidades na loja de bateria do Android.

Como usar / Dicas

Deve ser sua última linha na Promise da ação longa (finally{}).

Atenção / Cuidados

Remove a notificação contínua e devolve os recursos ao hardware.

↩ Promise
await desativarSegundoPlano();
solicitarCriacaoWidget() requestWidgetPin()

Solicita ao usuário que fixe manualmente o Widget do app na tela inicial.

Por que usar?

Atalhos direto no coração da tela inicial do celular geram tráfego monstruoso de engajamento.

Como usar / Dicas

Exibe o pop-up rápido nativo "Deseja fixar à tela inicial?".

Atenção / Cuidados

Em Androids antigos (7 pra baixo) simplesmente ignorado porque os atalhos não existiam globalmente na API.

↩ Promise
await solicitarCriacaoWidget();
atualizarWidget(opcoes) updateWidget()

Atualiza o layout, cores, textos e imagem lateral do Widget fixado na tela inicial.

Por que usar?

Modificar o conteúdo do widget (saldo bancário, música atual) usando JS simples e strings hexadecimais.

Como usar / Dicas

Passa um dicionário e o próprio Java repinta a View Remota do Widget Android.

Atenção / Cuidados

Nunca crie loops infinitos que atualizem de 1 em 1 segundo. Isso consome a CPU assombrosamente e o Android irá punir o app banindo o widget.

titulodescricaoimagem?
↩ Promise
await atualizarWidget({ titulo: "Novo Alerta", descricao: "Seu processamento terminou!", fundoCor: "#000000", corTexto: "#ffffff", botao1: { texto: "Abrir", acao: "abrir_app" } });
aoClicarWidget(callback) onWidgetClick()

Intercepta os cliques recebidos nos botões do Widget da tela inicial.

Por que usar?

Diferenciar que a navegação do usuário que entrou "pela porta lateral" quer ações específicas (ex: botão play, botão depositar).

Como usar / Dicas

Intercepta "detail" que vem na String do click e roteia seu router do React/Vue/Vanilla.

Atenção / Cuidados

Registre este callback logo no header do seu app, para não perder nenhum clique adiantado feito pelo widget.

callback(acao)
↩ Function (cancelar)
window.addEventListener("aoClicarWidget", (event) => { const acao = event.detail; if (acao === "abrir_app") alert("Abriu pelo Widget!"); });
abrirOverlay(opcoes) openOverlay()

Abre uma janela em bolha flutuante livremente arrastável (Overlay) que se sobrepõe a todos os outros apps.

Por que usar?

Bolhas onipresentes que andam pela tela cobrindo Instagram, WhatsApp e mapas.

Como usar / Dicas

Uma pequena janela customizável é desenhada acima da camada superior do DisplayMetrics Android.

Atenção / Cuidados

Google é brutal em restringir esse acesso de segurança. É exigido do usuário a aprovação mais crítica das "Configurações Ocultas de Sobreposição".

urllarguraaltura
↩ Promise
await abrirOverlay({ url: "https://seu-site.com/widget.html", largura: 300, altura: 400 });
fecharOverlay() closeOverlay()

Fecha programaticamente a bolha flutuante ativa.

Por que usar?

Remoção forçada ou fechamento higiênico após o app resolver a entrega, viagem ou cálculo desejado na bolha.

Como usar / Dicas

Libera a janela de volta pro lixo da VM Android.

Atenção / Cuidados

Não mata seu app primário, apenas apaga a camada extra flutuante.

↩ Promise
await fecharOverlay();
agendarNotificacao(opcoes) scheduleNotification()

Agenda uma notificação para o futuro. Funciona mesmo com o app fechado.

Por que usar?

Útil para engajamento, lembretes de carrinho abandonado ou alertas que precisam ocorrer mesmo com o app fechado.

Como usar / Dicas

Agende com um timestamp (em milissegundos) para o futuro. O Android acorda no horário e exibe.

Atenção / Cuidados

Alarmes exatos podem atrasar alguns minutos dependendo do modo de Economia de Bateria do sistema Android (Doze mode).

titulotextoquandoaoClicar?
↩ Promise<{ id }>
await agendarNotificacao({ titulo: "Lembrete", texto: "Hora de abrir o app", quando: Date.now() + 60000 });
agendarLoopNotificacoes(opcoes) scheduleNotificationLoop()

Cria um loop de notificações recorrentes. O Android dispara a próxima da lista a cada intervalo.

Por que usar?

Ideal para apps de saúde, rotinas e hábitos (ex: "Beba água", "Levante-se").

Como usar / Dicas

Passe uma lista de notificações e um intervalo (ex: "12h"). O sistema circulará por elas.

Atenção / Cuidados

Evite intervalos muito curtos (menores que 1h) para não irritar o usuário ou causar punição de bateria pelo sistema.

aCadanotificacoes[]
↩ Promise<{ id }>
const loop = await agendarLoopNotificacoes({ aCada: "12h", notificacoes: [ { titulo: "Beba água", texto: "Hidrate-se" }, { titulo: "Alongamento", texto: "Pausa rápida" } ] });
cancelarNotificacao(id) cancelNotification()

Cancela uma notificação agendada ou loop pelo ID.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

id
↩ Promise
await cancelarNotificacao(loop.id);
aoClicarNotificacao(callback) onNotificationClick()

Dispara quando o usuário toca em uma notificação.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(evento)
↩ Function (cancelar)
aoClicarNotificacao((evento) => { console.log(evento.id, evento.aoClicar); });
solicitarPermissaoPush() requestPushPermission()

Solicita permissão de push remoto (OneSignal). Requer oneSignalAppId no app.json.

Por que usar?

Permite enviar campanhas remotas globais pelo servidor/OneSignal para a base de usuários instalados.

Como usar / Dicas

Chame durante o onboarding do app para maximizar a conversão de aceites.

Atenção / Cuidados

Certifique-se de ter configurado o oneSignalAppId no app.json antes de compilar.

↩ Promise<{ granted }>
const perm = await solicitarPermissaoPush();
identificarUsuarioPush(id) loginPushUser()

Vincula um ID de usuário ao OneSignal para push direcionado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

id
↩ void
identificarUsuarioPush("user-123");
adicionarTagPush(chave, valor) addPushTag()

Adiciona uma tag ao perfil OneSignal do usuário para segmentação.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chavevalor
↩ void
adicionarTagPush("plano", "premium");
agendarNotificacoes(array) scheduleNotifications()

Agenda várias notificações de uma vez.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

notificacoes[]
↩ Promise<[{ id }]>
await agendarNotificacoes([ { titulo: "Primeiro", texto: "Msg 1", quando: Date.now() + 60000 }, { titulo: "Segundo", texto: "Msg 2", quando: Date.now() + 120000 } ]);
solicitarPermissaoNotificacoes() requestNotificationPermission()

Solicita permissão de notificações (Android 13+).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const permitido = await solicitarPermissaoNotificacoes(); if (permitido) { /* pode notificar */ }
aoClicarPush(callback) onPushClick()

Dispara quando o usuário clica em uma notificação push remota (OneSignal).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(evento)
↩ Function (cancelar)
const parar = aoClicarPush((evento) => { abrirNoApp("#/notificacoes"); });

Câmera & Mídia

Capture fotos, vídeos, escaneie QR Codes e reconheça texto em imagens.

tirarFoto(opcoes?) takePhoto()

Abre a câmera e tira uma foto. Pode retornar em base64.

Por que usar?

Capturar imagens para avatares, envio de recibos ou verificação diretamente pelo app.

Como usar / Dicas

Use `{ base64: true }` para exibir um preview imediato ou enviar em JSON para sua API.

Atenção / Cuidados

O usuário pode negar a permissão CAMERA ou cancelar a foto, retornando vazio. Sempre envolva num bloco try/catch.

base64?qualidade?
↩ Promise<{ base64, mimeType, uri }>
const foto = await tirarFoto({ base64: true }); img.src = `data:${foto.mimeType};base64,${foto.base64}`;
capturarVideo() captureVideo()

Abre a câmera no modo de vídeo.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ uri, nome, mimeType }>
const video = await capturarVideo();
escanearQRCode() scanQRCode()

Abre o scanner de QR Code e retorna o texto identificado.

Por que usar?

Acelera processos como pagamentos, links de convite e login.

Como usar / Dicas

Basta invocar, o plugin cuidará de abrir a tela de scanner nativa otimizada.

Atenção / Cuidados

Requer suporte ao BarcodeDetector no WebView do usuário (quase universal hoje). Pode retornar nulo se cancelado.

↩ Promise<{ text, format, cancelled }>
const qr = await escanearQRCode(); if (qr) console.log(qr.text);
ocr(imagem) recognizeText()

Reconhece texto numa imagem usando ML Kit local (offline).

Por que usar?

Extrair texto de imagens físicas, como documentos, placas ou cartões de visita, de forma 100% offline.

Como usar / Dicas

Passe o URI ou base64 de uma imagem (da galeria ou câmera). Ele devolve strings extraídas.

Atenção / Cuidados

O processamento ocorre no próprio celular (sem custo de nuvem), mas pode demorar alguns milissegundos a mais em aparelhos antigos.

imagem
↩ Promise<{ texto, blocos }>
const resultado = await ocr(foto); console.log(resultado.texto);
capturarTela() captureScreen()

Captura a tela atual do WebView e retorna como Data URL.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ dataUrl }>
const print = await capturarTela(); img.src = print.dataUrl;

Arquivos & Storage

Salve, leia, compartilhe e gerencie arquivos dentro do app ou na galeria.

salvarArquivo(nome, dados) saveFile()

Salva um arquivo no armazenamento do app. Ou abre o seletor nativo usando formato de objeto.

Por que usar?

Salvar configurações persistentes ou estado (ex: perfil) sem depender de localStorage que pode ser limpo pelo WebView.

Como usar / Dicas

Com objeto `nome, valor`, ele salva no banco oculto do app. Com `{nome, conteudo}`, abre a janela do Android perguntando ONDE salvar (Downloads, etc).

Atenção / Cuidados

Dados do banco oculto morrem se o usuário desinstalar o app ou limpar os dados.

nome/opcoesconteudo
↩ Promise<{ uri }>
await salvarArquivo("perfil.json", { nome: "Ana", plano: "premium" });
lerArquivo(nome) readFile()

Lê um arquivo salvo no app. Retorna o conteúdo parseado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
const perfil = await lerArquivo("perfil.json"); console.log(perfil.nome);
listarArquivos() listFiles()

Lista todos os arquivos salvos no armazenamento do app.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const arquivos = await listarArquivos();
excluirArquivo(nome) deleteFile()

Exclui um arquivo do armazenamento do app.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
await excluirArquivo("perfil.json");
escolherArquivo(opcoes?) pickFile()

Abre o seletor de arquivos do Android.

Por que usar?

Permitir que o usuário envie PDFs, fotos ou áudios que ele já tem salvos no celular.

Como usar / Dicas

Utilize os filtros `tipos` para restringir apenas o que o app suporta (ex: `application/pdf`).

Atenção / Cuidados

Em Android 13+, a seleção de arquivos usa o moderno Photo Picker (privacidade total), dispensando a permissão assustadora de armazenamento completo.

tipos?multiplo?
↩ Promise<{ uri, nome, mimeType, tamanho }>
const pdf = await escolherArquivo({ tipos: ["application/pdf"] });
escolherImagem() pickImage()

Abre o Photo Picker (Android 13+) ou galeria.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ uri, nome, mimeType, tamanho }>
const img = await escolherImagem();
baixarArquivo(url, nome) downloadFile()

Baixa um arquivo da web e salva no app. Mostra progresso na notificação.

Por que usar?

Fazer download visível de relatórios, boletos ou recibos.

Como usar / Dicas

O arquivo baixado aparecerá na barra de notificações nativa do Android, mostrando progresso.

Atenção / Cuidados

Precisa de internet estável. Se a permissão de notificações (POST_NOTIFICATIONS) for negada, baixa silenciosamente.

urlnomegaleria?
↩ Promise<{ uri }>
await baixarArquivo("https://exemplo.com/relatorio.pdf", "relatorio.pdf");
compartilhar(opcoes) share()

Abre o menu de compartilhamento do Android com texto, link ou arquivo.

Por que usar?

Estimula a viralidade e engajamento. Facilita o envio de convites ou conteúdos por WhatsApp/Instagram.

Como usar / Dicas

Envie um título, texto e link. Você também pode injetar uma imagem salva localmente.

Atenção / Cuidados

A janela de compartilhamento (Share Sheet) é desenhada e controlada nativamente pelo sistema operacional.

titulo?texto?url?arquivo?
↩ Promise<{ ok }>
await compartilhar({ titulo: "Confira!", texto: "Veja esse conteúdo", url: "https://exemplo.com" });
lerArquivoCompleto(nome) readFileInfo()

Lê um arquivo com todos os metadados: uri, mimeType, nome, tamanho e tipo (imagem/video/audio/documento).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise<{ uri, mimeType, name, nome, size, tamanho, type, tipo }>
const info = await lerArquivoCompleto("foto.png"); console.log(info.mimeType, info.tamanho);
arquivoExiste(nome) fileExists()

Verifica se um arquivo existe no armazenamento do app.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
const existe = await arquivoExiste("perfil.json"); if (!existe) await salvarArquivo("perfil.json", {});
abrirArquivo(nome) openFile()

Abre um arquivo salvo no app com o app padrão do Android (PDF no leitor, imagem na galeria, etc).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
await abrirArquivo("relatorio.pdf");
compartilharArquivo(nome) shareFile()

Compartilha um arquivo salvo no app via menu nativo do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise<{ ok }>
await compartilharArquivo("relatorio.pdf");
escolherArquivos(opcoes) pickFiles()

Abre o seletor para múltiplos arquivos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

multiplo?tipos?
↩ Promise>
const arquivos = await escolherArquivos({ multiplo: true }); console.log(arquivos.length, "arquivos selecionados");
escolherImagens(opcoes) pickImages()

Abre o Photo Picker para múltiplas imagens (Android 13+).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

multiplas?
↩ Promise>
const fotos = await escolherImagens({ multiplas: true }); fotos.forEach(f => console.log(f.nome));
baixarBase64(nome, base64, opcoes) downloadBase64()

Salva dados base64 como arquivo. Útil para salvar imagens geradas no canvas.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nomebase64mimeType?galeria?
↩ Promise<{ uri, publicUri? }>
await baixarBase64("foto.png", base64String, { mimeType: "image/png", galeria: true });
baixarArquivoLocal(arquivo, nome) downloadLocalFile()

Copia um arquivo (de escolherArquivo) para o armazenamento do app com notificação de progresso.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

arquivonome
↩ Promise<{ uri }>
const arquivo = await escolherArquivo(); if (arquivo) { await baixarArquivoLocal(arquivo, "copia-" + arquivo.name); }
infoArmazenamento() storageInfo()

Retorna informações de espaço em disco disponível.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ total, available, used }>
const espaco = await infoArmazenamento(); console.log("Disponível:", espaco.available);

Áudio & Voz

Grave áudio, sintetize voz, reconheça fala e controle o volume do dispositivo.

ouvirMic() startMic()

Inicia a gravação de áudio pelo microfone. Solicita permissão automaticamente.

Por que usar?

Interações ativas por voz, como enviar áudios de chat no seu SaaS.

Como usar / Dicas

Chame e deixe gravando. Crie uma interface no HTML piscando. Quando o usuário soltar, chame pararMic().

Atenção / Cuidados

Requer permissão de RECORD_AUDIO. Ao parar, retorna o tamanho e a duração. Arquivos muito longos geram base64 gigante (memória).

↩ Promise<{ recording, settingsOpened }>
await ouvirMic(); // ... Quando quiser parar: const audio = await pararMic();
pararMic() stopMic()

Para a gravação e retorna o áudio em base64.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ base64, mimeType, durationMs }>
const audio = await pararMic(); const player = new Audio(`data:${audio.mimeType};base64,${audio.base64}`); player.play();
falar(texto, opcoes?) speak()

Fala o texto em voz alta usando o Text-to-Speech do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

textoidioma?velocidade?
↩ Promise
await falar("Olá mundo!", { idioma: "pt-BR", velocidade: 1 });
ouvir(opcoes?) speechToText()

Ativa o reconhecimento de voz e transcreve o áudio.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

idioma?
↩ Promise<{ texto, error }>
const voz = await ouvir({ idioma: "pt-BR" }); console.log(voz.texto);
volumeAtual() getVolume()

Retorna os volumes atuais e máximos do dispositivo.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ midia, toque, alarme }>
const vol = await volumeAtual(); console.log(vol.midia.atual, vol.midia.maximo);
definirVolume(stream, porcentagem) setVolume()

Ajusta o volume de um stream (midia, toque, alarme).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

streamporcentagemmostrarUI?
↩ Promise
await definirVolume("midia", 0.5, { mostrarUI: true });
pararFala() stopSpeech()

Para a fala TTS em andamento.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
await falar("Texto longo..."); // Interromper: await pararFala();

Localização & Sensores

GPS, velocímetro, NFC, proximidade, acelerômetro e orientação do aparelho.

obterLocalizacao(opcoes?) getLocation()

Obtém a posição GPS atual. Solicita permissão automaticamente.

Por que usar?

Geolocalização para apps de entrega, relatórios logísticos ou mapas de cobertura.

Como usar / Dicas

Use `{ altaPrecisao: true }` para forçar o GPS (consome mais bateria) em vez da rede celular.

Atenção / Cuidados

Se o usuário não deu permissão, abrirá um prompt do Android. Trate cenários onde o usuário negou.

altaPrecisao?timeoutMs?
↩ Promise<{ latitude, longitude, precisao, velocidadeKmh }>
const local = await obterLocalizacao({ altaPrecisao: true }); console.log(local.latitude, local.longitude);
acompanharLocalizacao(opcoes?) watchLocation()

Inicia o monitoramento contínuo da posição GPS.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

intervaloMs?
↩ Promise<{ watchId }>
const watch = await acompanharLocalizacao({ intervaloMs: 5000 });
medirVelocidade(callback) measureSpeed()

Monitora a velocidade em km/h em tempo real via GPS.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(kmh, local)
↩ Promise
const parar = await medirVelocidade((kmh, local) => { console.log(`Velocidade: ${kmh} km/h`); });
aoSacudirCelular(callback) onPhoneShake()

Dispara quando o celular é sacudido com força.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoSacudirCelular((dados) => { console.log("Sacudiu!", dados.forca); });
aoNFC(callback) onNFC()

Escuta tags NFC quando o app está em primeiro plano.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoNFC((dados) => { console.log("Tag NFC", dados.id, dados.mensagens); });
aoAproximarObjeto(callback) onProximityNear()

Dispara quando o sensor de proximidade detecta algo perto.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoAproximarObjeto((dados) => { console.log("Distância:", dados.distancia); });

Conectividade

Bluetooth, WiFi local entre dispositivos, deep links e redes.

procurarBT() scanBluetooth()

Busca dispositivos Bluetooth pareados ou visíveis.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<[{ id, nome, host }]>
const dispositivos = await procurarBT();
conectarBT(id) connectBluetooth()

Conecta a um dispositivo Bluetooth encontrado.

Por que usar?

Comunicação peer-to-peer 1-para-N entre apps sem depender de servidor externo.

Como usar / Dicas

Com o app hospedando (Broadcast), você pode distribuir atualizações JSON para múltiplos celulares pareados simultaneamente.

Atenção / Cuidados

O Bluetooth precisa estar ligado e o usuário deve aceitar pareamento se for a primeira vez.

id
↩ Promise
await conectarBT(dispositivos[0].id);
enviarBT(dados) sendBluetooth()

Envia dados JSON para o dispositivo conectado via Bluetooth.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

dados
↩ Promise
await enviarBT({ mensagem: "Olá por BT" });
procurarWiFi() scanWiFi()

Busca dispositivos na rede local via NSD (mesma rede WiFi).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<[{ id, nome, host, porta }]>
const dispositivos = await procurarWiFi();
conectarWiFi(id) connectWiFi()

Conecta a um dispositivo WiFi local encontrado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

id
↩ Promise
await conectarWiFi(dispositivos[0].id);
enviarWiFi(dados) sendWiFi()

Envia dados JSON para o dispositivo conectado via WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

dados
↩ Promise
await enviarWiFi({ mensagem: "Olá por WiFi" });
obterLinkInicial() getInitialLink()

Retorna o deep link que abriu o app (se houver).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const link = await obterLinkInicial(); if (link) console.log("Abriu via:", link);
aoConectarBT(callback) onBluetoothConnect()

Dispara quando um dispositivo Bluetooth se conecta ao seu app (modo Host P2P).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dispositivo)
↩ Function (cancelar)
aoConectarBT((dispositivo) => { console.log("Conectado:", dispositivo.nome); });
aoReceberDadosBT(callback) onBluetoothData()

Dispara quando recebe dados JSON via Bluetooth de outro dispositivo.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoReceberDadosBT((dados) => { console.log("Recebido:", dados); });
aoDarErroBT(callback) onBluetoothError()

Dispara quando ocorre um erro na conexão Bluetooth.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(erro)
↩ Function (cancelar)
aoDarErroBT((erro) => { console.log("Erro BT:", erro.mensagem); });
aoConectarWiFi(callback) onWiFiConnect()

Dispara quando um dispositivo se conecta via WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dispositivo)
↩ Function (cancelar)
aoConectarWiFi((dispositivo) => { console.log("WiFi conectado:", dispositivo.nome); });
aoReceberDadosWiFi(callback) onWiFiData()

Dispara quando recebe dados JSON via WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoReceberDadosWiFi((dados) => { console.log("Recebido WiFi:", dados); });
aoDarErroWiFi(callback) onWiFiError()

Dispara quando ocorre um erro na conexão WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(erro)
↩ Function (cancelar)
aoDarErroWiFi((erro) => { console.log("Erro WiFi:", erro.mensagem); });
aoAbrirLink(callback) onDeepLink()

Dispara quando o app recebe um deep link enquanto já está aberto.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(link)
↩ Function (cancelar)
aoAbrirLink((link) => { console.log("Link recebido:", link.url); });

Interface Nativa

Controle de tema, tela, fullscreen, ícone flutuante, lanterna e clipboard.

toast(mensagem) toast()

Exibe uma mensagem rápida (toast nativo do Android).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

mensagem
↩ void
toast("Operação concluída!");
vibrar(ms) vibrate()

Vibra o aparelho pela duração em milissegundos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

duracaoMs
↩ void
vibrar(250);
lanterna(ligar) flashlight()

Liga ou desliga o flash/lanterna do aparelho.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ligar (boolean)
↩ Promise<{ status }>
await lanterna(true);
definirCorTema(cor) setThemeColor()

Altera a cor da barra de status e navegação do Android em tempo real.

Por que usar?

Imersão completa. Evita que o app pareça um simples site num navegador, mesclando a barra do sistema à cor da sua UI.

Como usar / Dicas

Dispare sempre que o usuário mudar de tela, alterando a barra superior para combinar com o header atual.

Atenção / Cuidados

Nenhum efeito colateral grave. O contraste dos ícones da barra (claro/escuro) é ajustado automaticamente.

cor (hex)
↩ Promise
await definirCorTema("#FF5722");
fullscreen(ativar) fullscreen()

Ativa ou desativa o modo tela cheia.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ativar (boolean)
↩ void
fullscreen(true);
manterTelaLigada(ativar) keepScreenOn()

Impede que a tela se apague automaticamente.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ativar (boolean)
↩ Promise
await manterTelaLigada(true);
brilhoTela(valor) setScreenBrightness()

Ajusta o brilho da tela (0 a 1).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

valor (0-1)
↩ Promise
await brilhoTela(0.8);
copiarTexto(texto) copyText()

Copia o texto para a área de transferência.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

texto
↩ Promise
await copiarTexto("codigo-abc-123");
iniciarIconeFlutuante(opcoes?) startFloatingIcon()

Exibe um ícone flutuante do app sobre outros apps.

Por que usar?

Para apps que precisam ser acessados como ferramenta enquanto o usuário usa outros aplicativos (ex: app motorista de app, calculadora overlay).

Como usar / Dicas

Chame e o ícone do seu app ficará sobre a tela. A opacidade também pode ser reduzida.

Atenção / Cuidados

Requer a perigosa permissão `SYSTEM_ALERT_WINDOW`. A bridge guia o usuário até as configurações avançadas para ativar se necessário.

opacidade?
↩ Promise
await iniciarIconeFlutuante({ opacidade: 0.85 });
aguardar(ms) loading()

Cria uma pausa com Promise para usar com await, sem travar a WebView.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ms
↩ Promise
await toast("Começando..."); await aguardar(3000); await toast("Pronto!");
alternarLanterna() toggleFlashlight()

Alterna o estado da lanterna (liga se desligada, desliga se ligada).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ enabled }>
const status = await alternarLanterna(); console.log("Lanterna ligada?", status.enabled);
definirOpacidadeIconeFlutuante(valor) setFloatingIconOpacity()

Ajusta a opacidade do ícone flutuante em tempo real.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

valor (0-1)
↩ Promise
await definirOpacidadeIconeFlutuante(0.55);
lerTextoCopiado() readClipboard()

Lê o texto que está na área de transferência.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const texto = await lerTextoCopiado(); console.log("Copiado:", texto);

Segurança & Biometria

Autenticação biométrica, bloqueio de tela, storage seguro e sessões.

autenticarBiometria(opcoes) authenticateBiometric()

Solicita autenticação por impressão digital ou reconhecimento facial.

Por que usar?

Proteção extra sem atrito para dados sensíveis, compras ou login automático.

Como usar / Dicas

Dispare no início ou antes de uma transação perigosa. Retorna true se a digital (ou face) for aprovada.

Atenção / Cuidados

Retornará falso (ou erro) se o aparelho não tiver sensor ou não tiver nenhuma biometria cadastrada no sistema.

titulodescricao
↩ Promise<{ authenticated, supported, canceled }>
const bio = await autenticarBiometria({ titulo: "Confirmar acesso", descricao: "Use sua biometria" }); if (bio.authenticated) { /* acesso ok */ }
solicitarBloqueio(opcoes) requestDeviceLock()

Pede a senha de tela / PIN / padrão do aparelho.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

titulodescricao
↩ Promise<{ autenticado, suportado, cancelado }>
const auth = await solicitarBloqueio({ titulo: "Área Restrita", descricao: "Confirme sua senha de tela" });
salvarSeguro(chave, valor) saveSecure()

Salva um dado criptografado no armazenamento seguro do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chavevalor
↩ Promise
await salvarSeguro("token", "jwt-abc-123");
lerSeguro(chave) readSecure()

Lê um dado do armazenamento seguro criptografado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chave
↩ Promise
const token = await lerSeguro("token");
salvarNaSessao(chave, valor) sessionSet()

Salva um dado na sessão (persiste até o app ser fechado).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chavevalor
↩ Promise
await salvarNaSessao("sessaoAtiva", "true");
instalarAtualizacao(url, opcoes?) installUpdate()

Baixa e instala um APK de atualização (OTA). Mostra modal de progresso.

Por que usar?

Atualizações OTA (Over-The-Air) para contornar a Play Store e entregar melhorias aos usuários diretamente.

Como usar / Dicas

Apenas passe a URL de um arquivo APK válido hospedado em servidor público. O app cuida do download e de invocar a tela de update.

Atenção / Cuidados

Se o app for o Android 8+, exige a permissão `Instalar apps desconhecidos`, a tela será aberta automaticamente a primeira vez para o usuário aceitar.

urltitulo?mensagem?
↩ Promise
await instalarAtualizacao("https://servidor.com/app.apk", { titulo: "Atualizando...", mensagem: "Não feche o app" });
solicitarPermissaoInstalacao() requestInstallPermission()

Solicita permissão para instalar APKs (Android 8+). Abre a tela nativa de configurações.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ suportado, solicitado, permitido }>
const perm = await solicitarPermissaoInstalacao(); if (perm.permitido) { await instalarAtualizacao("https://site.com/app.apk"); }
solicitarPermissaoArmazenamento() requestStoragePermission()

Solicita acesso completo a arquivos (Android 11+). Em versões anteriores, usa popup tradicional.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ permission, granted, requiresSettings, requested, settingsOpened }>
const perm = await solicitarPermissaoArmazenamento(); if (perm.granted) { console.log("Acesso liberado!"); }
statusPermissaoArmazenamento() storagePermissionStatus()

Consulta silenciosamente se tem permissão de armazenamento, sem abrir tela.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ granted }>
const status = await statusPermissaoArmazenamento(); console.log("Tem permissão?", status.granted);

Eventos do Sistema

Ouça eventos nativos do Android: ciclo do app, hardware, conectividade e mais.

aoEvento(nome, callback) onEvent()

Ouve qualquer evento nativo. Retorna uma função para cancelar a escuta.

Por que usar?

Poder absoluto sobre os ciclos de vida nativos (background/foreground/etc).

Como usar / Dicas

Assine o evento logo no início (ex: na sua store JS) e destrua no encerramento (se houver).

Atenção / Cuidados

O `aoVoltarParaApp` é inteligente e não é disparado se o app só abriu a tela da Câmera e fechou. Ele só dispara quando sai pra tela inicial do celular real.

nomecallback
↩ Function (cancelar)
const parar = aoEvento("app:background", (e) => { console.log("App saiu da frente"); }); // Para parar: parar();
aoMinimizar(callback) onMinimize()

Dispara quando o app vai para segundo plano.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback
↩ Function (cancelar)
aoMinimizar(() => console.log("Minimizou"));
aoConectarUSB(callback) onUSBConnect()

Dispara quando um cabo USB é conectado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoConectarUSB((dados) => console.log("USB conectado", dados));
aoConectarFone(callback) onHeadphoneConnect()

Dispara quando um fone de ouvido é conectado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoConectarFone((dados) => console.log("Fone:", dados.dispositivo));
aoMudarVolume(callback) onVolumeChange()

Dispara quando o volume é alterado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoMudarVolume((dados) => console.log("Volume:", dados.midia.atual));
aoAbrirTeclado(callback) onKeyboardOpen()

Dispara quando o teclado virtual aparece.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoAbrirTeclado((d) => console.log("Teclado:", d.alturaTeclado));
aoTirarPrint(callback) onScreenshot()

Dispara quando o usuário tira um print da tela.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoTirarPrint((dados) => console.log("Print!", dados.uri));
aoVoltarParaApp(callback) onResume()

Dispara quando o usuário volta ao app após ter saído. O html2apk suprime falsos positivos de telas nativas bloqueantes.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback
↩ Function (cancelar)
aoVoltarParaApp(() => { console.log("Bem-vindo de volta!"); carregarDadosAtualizados(); });

Sistema & Navegação

Informações do dispositivo, navegação, links externos e controle do app.

infoDispositivo() deviceInfo()

Retorna informações do aparelho (modelo, versão Android, etc).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ modelo, fabricante, versaoAndroid, ... }>
const info = await infoDispositivo();
infoBateria() batteryInfo()

Retorna o nível e status da bateria.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ nivel, carregando }>
const bat = await infoBateria();
infoRede() networkInfo()

Retorna o status da conexão de rede.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ conectado, tipo }>
const rede = await infoRede();
abrirNoApp(url) openInApp()

Navega para uma URL dentro do próprio WebView do APK.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

urlsubstituir?
↩ void
abrirNoApp("/sobre.html"); abrirNoApp("#/pedido/123");
abrirForaDoApp(url) openOutsideApp()

Abre uma URL no navegador padrão do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

url
↩ void
abrirForaDoApp("https://google.com");
minimizarApp() minimizeApp()

Minimiza o app (vai para segundo plano).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
await minimizarApp();
fecharApp() exitApp()

Encerra o app completamente. Use com cuidado!

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ void
// Use somente após salvar estado! fecharApp();
definirPapelParede(imagem, opcoes?) setWallpaper()

Define um papel de parede (tela de início, bloqueio ou ambos).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

imagemalvo?
↩ Promise<{ applied }>
await definirPapelParede("wallpaper.jpg", { alvo: "inicio" });
abrirWhatsapp(numero, mensagem) openWhatsapp()

Abre o WhatsApp com número e mensagem pré-preenchidos.

Por que usar?

Atendimento via chat, vendas diretas ou suporte rápido.

Como usar / Dicas

Coloque um número +55... e a mensagem pré-formatada.

Atenção / Cuidados

Se o WhatsApp não estiver instalado, a função tentará usar um esquema de intent de fallback, mas tenha sempre um try/catch.

numeromensagem?
↩ Promise
await abrirWhatsapp("5511999999999", "Oi, vim pelo app!");
discar(numero) dial()

Abre o discador do Android com o número preenchido.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

numero
↩ Promise
await discar("11999999999");
abrirMapa(endereco) openMap()

Abre o Google Maps com um endereço ou coordenadas.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

endereco
↩ Promise
await abrirMapa("Avenida Paulista, São Paulo");
verificarPacote(nome) checkPackage()

Verifica se um app está instalado. Busca inteligente por nome ou packageId.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise<{ exists, version, packageId, appName }>
const wpp = await verificarPacote("WhatsApp"); if (wpp.exists) console.log("v" + wpp.version);
abrirPacote(packageId) openPackage()

Abre outro app instalado no Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

packageId
↩ Promise<{ success }>
const r = await abrirPacote("com.whatsapp"); if (!r.success) toast("App não encontrado");
apontarArquivo(nome, extensao, abrir?) locateFile()

Encontra e aponta para um arquivo na pasta Downloads. Busca inteligente por palavra-chave.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nomeextensaoabrir?
↩ Promise<{ path, found }>
const f = await apontarArquivo("relatorio", "pdf", false); if (f.found) console.log(f.path);
instalarPacote(path) installPackage()

Abre a tela de instalação nativa do Android para um APK. Use "select" para abrir o seletor.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

path
↩ Promise
await instalarPacote("select"); // Abre seletor // ou await instalarPacote(caminho.path); // Instala direto
statusPermissoes(array) permissionsStatus()

Consulta o status de múltiplas permissões sem solicitá-las.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

permissoes[]
↩ Promise
const p = await statusPermissoes(["CAMERA", "RECORD_AUDIO"]); console.log(p);
aumentarVolume(stream, passos) volumeUp()

Aumenta o volume em N passos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

streampassos
↩ Promise
await aumentarVolume("midia", 1);
diminuirVolume(stream, passos) volumeDown()

Diminui o volume em N passos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

streampassos
↩ Promise
await diminuirVolume("midia", 1);

Compartilhamento

Receba arquivos, textos e links compartilhados de outros apps e compartilhe o próprio APK.

compartilharApp() shareApp() / share_me()

Compartilha o próprio APK do app com outros.

Por que usar?

Viralidade. Permite que o usuário envie o APK atual diretamente para o WhatsApp de um amigo, sem usar lojas.

Como usar / Dicas

Ative ao clicar num botão "Convidar um Amigo".

Atenção / Cuidados

Pode não ter 100% de sucesso se o aplicativo for um AAB fatiado (Bundle split) da Play Store. Para APKs standalone funciona perfeitamente.

↩ Promise<{ ok }>
await compartilharApp();
obterCompartilhamentoInicial() getInitialShare()

Retorna os dados do compartilhamento que abriu o app (se houver).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ tipo, uri?, texto? }>
const share = await obterCompartilhamentoInicial(); if (share) console.log(share.tipo, share.uri);
aoReceberCompartilhamento(callback) onShareReceived()

Dispara quando o app recebe um compartilhamento de outro app enquanto já está aberto.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoReceberCompartilhamento((dados) => { console.log(dados.tipo, dados.uri || dados.texto); });

Avançado & Background

Processamento em segundo plano, Widgets na tela inicial e Bolhas flutuantes (Overlay).

ativarSegundoPlano(opcoes) startBackgroundWorker()

Ativa o processamento persistente. O app continua executando JavaScript mesmo quando a tela é desligada ou o app é fechado/minimizador.

Por que usar?

Ideal para downloads muito longos, envio pesado de dados, relógios de ponto, reprodutores de rádio web contínuo e sincronização offline.

Como usar / Dicas

Quando ativado, exibe uma notificação fixa (Foreground Service) que impede o Android de matar o processo por economia de bateria.

Atenção / Cuidados

O sistema Android exigirá a permissão FOREGROUND_SERVICE. Evite abusos, ou os usuários podem forçar a parada do seu app.

titulo?texto?
↩ Promise
await ativarSegundoPlano({ titulo: "Sincronizando...", texto: "Aguarde a finalização dos downloads." });
desativarSegundoPlano() stopBackgroundWorker()

Desativa o modo segundo plano, removendo a notificação fixa e permitindo o descanso do app.

Por que usar?

Sempre deve ser chamado assim que a tarefa pesada for concluída, devolvendo os recursos ao celular.

Como usar / Dicas

Use após o fim do loop/sincronização. Ex: no finally de uma Promise.

Atenção / Cuidados

Se esquecer de chamar, a notificação ficará eternamente presa na tela do usuário gastando bateria.

↩ Promise
await desativarSegundoPlano();
solicitarCriacaoWidget() requestWidgetPin()

Solicita ao usuário que fixe manualmente o Widget do app na tela inicial.

Por que usar?

Aumenta gigantescamente o engajamento diário, pois seu app ganha um atalho visível direto na "área de trabalho" do celular.

Como usar / Dicas

Em um botão de configurações ou banner de marketing dentro do app, oferecendo conveniência.

Atenção / Cuidados

Disponível apenas para Android 8 (Oreo) ou superior. Em versões mais antigas será ignorado silenciosamente.

↩ Promise
await solicitarCriacaoWidget();
atualizarWidget(opcoes) updateWidget()

Atualiza o layout, cores, textos e imagem lateral do Widget fixado na tela inicial.

Por que usar?

Reflete dados em tempo real (como saldo da conta, cotações, última música tocada) direto na tela inicial sem precisar abrir o app.

Como usar / Dicas

Você pode injetar URLs de imagens para background, definir ícones, textos dos botões e as ações (que irão parar no evento aoClicarWidget).

Atenção / Cuidados

Evite atualizar a cada segundo (como um cronômetro), pois widgets no Android têm cota de atualização e podem sugar muita bateria.

titulodescricaoimagem?
↩ Promise
await atualizarWidget({ titulo: "Novo Alerta", descricao: "Seu processamento terminou!", fundoCor: "#000000", corTexto: "#ffffff", botao1: { texto: "Abrir", acao: "abrir_app" } });
aoClicarWidget(callback) onWidgetClick()

Intercepta os cliques recebidos nos botões do Widget da tela inicial.

Por que usar?

Para diferenciar se o usuário abriu o app normalmente ou se ele clicou no "Botão 2" do widget para engatilhar uma função rápida.

Como usar / Dicas

Geralmente deve ser atachado no carregamento do app (ex: no main.js) para não perder nenhum clique inicial.

Atenção / Cuidados

Como o Widget acorda o aplicativo, a engine primeiro carrega seu JS. Certifique-se de não amarrar o evento tarde demais no código.

callback(acao)
↩ Function (cancelar)
window.addEventListener("aoClicarWidget", (event) => { const acao = event.detail; if (acao === "abrir_app") alert("Abriu pelo Widget!"); });
abrirOverlay(opcoes) openOverlay()

Abre uma janela em bolha flutuante livremente arrastável (Overlay) que se sobrepõe a todos os outros apps.

Por que usar?

Criar assistentes estilo bolha do Messenger, players de vídeo PiP agressivos, ou calculadoras que o usuário usa por cima do WhatsApp.

Como usar / Dicas

É possível renderizar desde uma URL externa até um `file:///android_asset/www/bolha.html` local.

Atenção / Cuidados

Requer permissão explícita de "Sobreposição a outros apps" (SYSTEM_ALERT_WINDOW). Sem ela, a bolha não abre.

urllarguraaltura
↩ Promise
await abrirOverlay({ url: "https://seu-site.com/widget.html", largura: 300, altura: 400 });
fecharOverlay() closeOverlay()

Fecha programaticamente a bolha flutuante ativa.

Por que usar?

Sempre que o usuário terminar a interação ou clicar num botão "Fechar" dentro da comunicação com o app principal.

Como usar / Dicas

O usuário também tem o poder de arrastar a bolha nativamente para um [X] no rodapé da tela do Android, fechando sem precisar de código.

Atenção / Cuidados

Garante a liberação da memória da janela extra (é uma pequena WebView independente) do sistema operacional.

↩ Promise
await fecharOverlay();
agendarNotificacao(opcoes) scheduleNotification()

Agenda uma notificação para o futuro. Funciona mesmo com o app fechado.

Por que usar?

Útil para engajamento, lembretes de carrinho abandonado ou alertas que precisam ocorrer mesmo com o app fechado.

Como usar / Dicas

Agende com um timestamp (em milissegundos) para o futuro. O Android acorda no horário e exibe.

Atenção / Cuidados

Alarmes exatos podem atrasar alguns minutos dependendo do modo de Economia de Bateria do sistema Android (Doze mode).

titulotextoquandoaoClicar?
↩ Promise<{ id }>
await agendarNotificacao({ titulo: "Lembrete", texto: "Hora de abrir o app", quando: Date.now() + 60000 });
agendarLoopNotificacoes(opcoes) scheduleNotificationLoop()

Cria um loop de notificações recorrentes. O Android dispara a próxima da lista a cada intervalo.

Por que usar?

Ideal para apps de saúde, rotinas e hábitos (ex: "Beba água", "Levante-se").

Como usar / Dicas

Passe uma lista de notificações e um intervalo (ex: "12h"). O sistema circulará por elas.

Atenção / Cuidados

Evite intervalos muito curtos (menores que 1h) para não irritar o usuário ou causar punição de bateria pelo sistema.

aCadanotificacoes[]
↩ Promise<{ id }>
const loop = await agendarLoopNotificacoes({ aCada: "12h", notificacoes: [ { titulo: "Beba água", texto: "Hidrate-se" }, { titulo: "Alongamento", texto: "Pausa rápida" } ] });
cancelarNotificacao(id) cancelNotification()

Cancela uma notificação agendada ou loop pelo ID.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

id
↩ Promise
await cancelarNotificacao(loop.id);
aoClicarNotificacao(callback) onNotificationClick()

Dispara quando o usuário toca em uma notificação.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(evento)
↩ Function (cancelar)
aoClicarNotificacao((evento) => { console.log(evento.id, evento.aoClicar); });
solicitarPermissaoPush() requestPushPermission()

Solicita permissão de push remoto (OneSignal). Requer oneSignalAppId no app.json.

Por que usar?

Permite enviar campanhas remotas globais pelo servidor/OneSignal para a base de usuários instalados.

Como usar / Dicas

Chame durante o onboarding do app para maximizar a conversão de aceites.

Atenção / Cuidados

Certifique-se de ter configurado o oneSignalAppId no app.json antes de compilar.

↩ Promise<{ granted }>
const perm = await solicitarPermissaoPush();
identificarUsuarioPush(id) loginPushUser()

Vincula um ID de usuário ao OneSignal para push direcionado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

id
↩ void
identificarUsuarioPush("user-123");
adicionarTagPush(chave, valor) addPushTag()

Adiciona uma tag ao perfil OneSignal do usuário para segmentação.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chavevalor
↩ void
adicionarTagPush("plano", "premium");
agendarNotificacoes(array) scheduleNotifications()

Agenda várias notificações de uma vez.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

notificacoes[]
↩ Promise<[{ id }]>
await agendarNotificacoes([ { titulo: "Primeiro", texto: "Msg 1", quando: Date.now() + 60000 }, { titulo: "Segundo", texto: "Msg 2", quando: Date.now() + 120000 } ]);
solicitarPermissaoNotificacoes() requestNotificationPermission()

Solicita permissão de notificações (Android 13+).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const permitido = await solicitarPermissaoNotificacoes(); if (permitido) { /* pode notificar */ }
aoClicarPush(callback) onPushClick()

Dispara quando o usuário clica em uma notificação push remota (OneSignal).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(evento)
↩ Function (cancelar)
const parar = aoClicarPush((evento) => { abrirNoApp("#/notificacoes"); });

Câmera & Mídia

Capture fotos, vídeos, escaneie QR Codes e reconheça texto em imagens.

tirarFoto(opcoes?) takePhoto()

Abre a câmera e tira uma foto. Pode retornar em base64.

Por que usar?

Capturar imagens para avatares, envio de recibos ou verificação diretamente pelo app.

Como usar / Dicas

Use `{ base64: true }` para exibir um preview imediato ou enviar em JSON para sua API.

Atenção / Cuidados

O usuário pode negar a permissão CAMERA ou cancelar a foto, retornando vazio. Sempre envolva num bloco try/catch.

base64?qualidade?
↩ Promise<{ base64, mimeType, uri }>
const foto = await tirarFoto({ base64: true }); img.src = `data:${foto.mimeType};base64,${foto.base64}`;
capturarVideo() captureVideo()

Abre a câmera no modo de vídeo.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ uri, nome, mimeType }>
const video = await capturarVideo();
escanearQRCode() scanQRCode()

Abre o scanner de QR Code e retorna o texto identificado.

Por que usar?

Acelera processos como pagamentos, links de convite e login.

Como usar / Dicas

Basta invocar, o plugin cuidará de abrir a tela de scanner nativa otimizada.

Atenção / Cuidados

Requer suporte ao BarcodeDetector no WebView do usuário (quase universal hoje). Pode retornar nulo se cancelado.

↩ Promise<{ text, format, cancelled }>
const qr = await escanearQRCode(); if (qr) console.log(qr.text);
ocr(imagem) recognizeText()

Reconhece texto numa imagem usando ML Kit local (offline).

Por que usar?

Extrair texto de imagens físicas, como documentos, placas ou cartões de visita, de forma 100% offline.

Como usar / Dicas

Passe o URI ou base64 de uma imagem (da galeria ou câmera). Ele devolve strings extraídas.

Atenção / Cuidados

O processamento ocorre no próprio celular (sem custo de nuvem), mas pode demorar alguns milissegundos a mais em aparelhos antigos.

imagem
↩ Promise<{ texto, blocos }>
const resultado = await ocr(foto); console.log(resultado.texto);
capturarTela() captureScreen()

Captura a tela atual do WebView e retorna como Data URL.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ dataUrl }>
const print = await capturarTela(); img.src = print.dataUrl;

Arquivos & Storage

Salve, leia, compartilhe e gerencie arquivos dentro do app ou na galeria.

salvarArquivo(nome, dados) saveFile()

Salva um arquivo no armazenamento do app. Ou abre o seletor nativo usando formato de objeto.

Por que usar?

Salvar configurações persistentes ou estado (ex: perfil) sem depender de localStorage que pode ser limpo pelo WebView.

Como usar / Dicas

Com objeto `nome, valor`, ele salva no banco oculto do app. Com `{nome, conteudo}`, abre a janela do Android perguntando ONDE salvar (Downloads, etc).

Atenção / Cuidados

Dados do banco oculto morrem se o usuário desinstalar o app ou limpar os dados.

nome/opcoesconteudo
↩ Promise<{ uri }>
await salvarArquivo("perfil.json", { nome: "Ana", plano: "premium" });
lerArquivo(nome) readFile()

Lê um arquivo salvo no app. Retorna o conteúdo parseado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
const perfil = await lerArquivo("perfil.json"); console.log(perfil.nome);
listarArquivos() listFiles()

Lista todos os arquivos salvos no armazenamento do app.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const arquivos = await listarArquivos();
excluirArquivo(nome) deleteFile()

Exclui um arquivo do armazenamento do app.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
await excluirArquivo("perfil.json");
escolherArquivo(opcoes?) pickFile()

Abre o seletor de arquivos do Android.

Por que usar?

Permitir que o usuário envie PDFs, fotos ou áudios que ele já tem salvos no celular.

Como usar / Dicas

Utilize os filtros `tipos` para restringir apenas o que o app suporta (ex: `application/pdf`).

Atenção / Cuidados

Em Android 13+, a seleção de arquivos usa o moderno Photo Picker (privacidade total), dispensando a permissão assustadora de armazenamento completo.

tipos?multiplo?
↩ Promise<{ uri, nome, mimeType, tamanho }>
const pdf = await escolherArquivo({ tipos: ["application/pdf"] });
escolherImagem() pickImage()

Abre o Photo Picker (Android 13+) ou galeria.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ uri, nome, mimeType, tamanho }>
const img = await escolherImagem();
baixarArquivo(url, nome) downloadFile()

Baixa um arquivo da web e salva no app. Mostra progresso na notificação.

Por que usar?

Fazer download visível de relatórios, boletos ou recibos.

Como usar / Dicas

O arquivo baixado aparecerá na barra de notificações nativa do Android, mostrando progresso.

Atenção / Cuidados

Precisa de internet estável. Se a permissão de notificações (POST_NOTIFICATIONS) for negada, baixa silenciosamente.

urlnomegaleria?
↩ Promise<{ uri }>
await baixarArquivo("https://exemplo.com/relatorio.pdf", "relatorio.pdf");
compartilhar(opcoes) share()

Abre o menu de compartilhamento do Android com texto, link ou arquivo.

Por que usar?

Estimula a viralidade e engajamento. Facilita o envio de convites ou conteúdos por WhatsApp/Instagram.

Como usar / Dicas

Envie um título, texto e link. Você também pode injetar uma imagem salva localmente.

Atenção / Cuidados

A janela de compartilhamento (Share Sheet) é desenhada e controlada nativamente pelo sistema operacional.

titulo?texto?url?arquivo?
↩ Promise<{ ok }>
await compartilhar({ titulo: "Confira!", texto: "Veja esse conteúdo", url: "https://exemplo.com" });
lerArquivoCompleto(nome) readFileInfo()

Lê um arquivo com todos os metadados: uri, mimeType, nome, tamanho e tipo (imagem/video/audio/documento).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise<{ uri, mimeType, name, nome, size, tamanho, type, tipo }>
const info = await lerArquivoCompleto("foto.png"); console.log(info.mimeType, info.tamanho);
arquivoExiste(nome) fileExists()

Verifica se um arquivo existe no armazenamento do app.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
const existe = await arquivoExiste("perfil.json"); if (!existe) await salvarArquivo("perfil.json", {});
abrirArquivo(nome) openFile()

Abre um arquivo salvo no app com o app padrão do Android (PDF no leitor, imagem na galeria, etc).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise
await abrirArquivo("relatorio.pdf");
compartilharArquivo(nome) shareFile()

Compartilha um arquivo salvo no app via menu nativo do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise<{ ok }>
await compartilharArquivo("relatorio.pdf");
escolherArquivos(opcoes) pickFiles()

Abre o seletor para múltiplos arquivos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

multiplo?tipos?
↩ Promise>
const arquivos = await escolherArquivos({ multiplo: true }); console.log(arquivos.length, "arquivos selecionados");
escolherImagens(opcoes) pickImages()

Abre o Photo Picker para múltiplas imagens (Android 13+).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

multiplas?
↩ Promise>
const fotos = await escolherImagens({ multiplas: true }); fotos.forEach(f => console.log(f.nome));
baixarBase64(nome, base64, opcoes) downloadBase64()

Salva dados base64 como arquivo. Útil para salvar imagens geradas no canvas.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nomebase64mimeType?galeria?
↩ Promise<{ uri, publicUri? }>
await baixarBase64("foto.png", base64String, { mimeType: "image/png", galeria: true });
baixarArquivoLocal(arquivo, nome) downloadLocalFile()

Copia um arquivo (de escolherArquivo) para o armazenamento do app com notificação de progresso.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

arquivonome
↩ Promise<{ uri }>
const arquivo = await escolherArquivo(); if (arquivo) { await baixarArquivoLocal(arquivo, "copia-" + arquivo.name); }
infoArmazenamento() storageInfo()

Retorna informações de espaço em disco disponível.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ total, available, used }>
const espaco = await infoArmazenamento(); console.log("Disponível:", espaco.available);

Áudio & Voz

Grave áudio, sintetize voz, reconheça fala e controle o volume do dispositivo.

ouvirMic() startMic()

Inicia a gravação de áudio pelo microfone. Solicita permissão automaticamente.

Por que usar?

Interações ativas por voz, como enviar áudios de chat no seu SaaS.

Como usar / Dicas

Chame e deixe gravando. Crie uma interface no HTML piscando. Quando o usuário soltar, chame pararMic().

Atenção / Cuidados

Requer permissão de RECORD_AUDIO. Ao parar, retorna o tamanho e a duração. Arquivos muito longos geram base64 gigante (memória).

↩ Promise<{ recording, settingsOpened }>
await ouvirMic(); // ... Quando quiser parar: const audio = await pararMic();
pararMic() stopMic()

Para a gravação e retorna o áudio em base64.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ base64, mimeType, durationMs }>
const audio = await pararMic(); const player = new Audio(`data:${audio.mimeType};base64,${audio.base64}`); player.play();
falar(texto, opcoes?) speak()

Fala o texto em voz alta usando o Text-to-Speech do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

textoidioma?velocidade?
↩ Promise
await falar("Olá mundo!", { idioma: "pt-BR", velocidade: 1 });
ouvir(opcoes?) speechToText()

Ativa o reconhecimento de voz e transcreve o áudio.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

idioma?
↩ Promise<{ texto, error }>
const voz = await ouvir({ idioma: "pt-BR" }); console.log(voz.texto);
volumeAtual() getVolume()

Retorna os volumes atuais e máximos do dispositivo.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ midia, toque, alarme }>
const vol = await volumeAtual(); console.log(vol.midia.atual, vol.midia.maximo);
definirVolume(stream, porcentagem) setVolume()

Ajusta o volume de um stream (midia, toque, alarme).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

streamporcentagemmostrarUI?
↩ Promise
await definirVolume("midia", 0.5, { mostrarUI: true });
pararFala() stopSpeech()

Para a fala TTS em andamento.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
await falar("Texto longo..."); // Interromper: await pararFala();

Localização & Sensores

GPS, velocímetro, NFC, proximidade, acelerômetro e orientação do aparelho.

obterLocalizacao(opcoes?) getLocation()

Obtém a posição GPS atual. Solicita permissão automaticamente.

Por que usar?

Geolocalização para apps de entrega, relatórios logísticos ou mapas de cobertura.

Como usar / Dicas

Use `{ altaPrecisao: true }` para forçar o GPS (consome mais bateria) em vez da rede celular.

Atenção / Cuidados

Se o usuário não deu permissão, abrirá um prompt do Android. Trate cenários onde o usuário negou.

altaPrecisao?timeoutMs?
↩ Promise<{ latitude, longitude, precisao, velocidadeKmh }>
const local = await obterLocalizacao({ altaPrecisao: true }); console.log(local.latitude, local.longitude);
acompanharLocalizacao(opcoes?) watchLocation()

Inicia o monitoramento contínuo da posição GPS.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

intervaloMs?
↩ Promise<{ watchId }>
const watch = await acompanharLocalizacao({ intervaloMs: 5000 });
medirVelocidade(callback) measureSpeed()

Monitora a velocidade em km/h em tempo real via GPS.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(kmh, local)
↩ Promise
const parar = await medirVelocidade((kmh, local) => { console.log(`Velocidade: ${kmh} km/h`); });
aoSacudirCelular(callback) onPhoneShake()

Dispara quando o celular é sacudido com força.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoSacudirCelular((dados) => { console.log("Sacudiu!", dados.forca); });
aoNFC(callback) onNFC()

Escuta tags NFC quando o app está em primeiro plano.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoNFC((dados) => { console.log("Tag NFC", dados.id, dados.mensagens); });
aoAproximarObjeto(callback) onProximityNear()

Dispara quando o sensor de proximidade detecta algo perto.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoAproximarObjeto((dados) => { console.log("Distância:", dados.distancia); });

Conectividade

Bluetooth, WiFi local entre dispositivos, deep links e redes.

procurarBT() scanBluetooth()

Busca dispositivos Bluetooth pareados ou visíveis.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<[{ id, nome, host }]>
const dispositivos = await procurarBT();
conectarBT(id) connectBluetooth()

Conecta a um dispositivo Bluetooth encontrado.

Por que usar?

Comunicação peer-to-peer 1-para-N entre apps sem depender de servidor externo.

Como usar / Dicas

Com o app hospedando (Broadcast), você pode distribuir atualizações JSON para múltiplos celulares pareados simultaneamente.

Atenção / Cuidados

O Bluetooth precisa estar ligado e o usuário deve aceitar pareamento se for a primeira vez.

id
↩ Promise
await conectarBT(dispositivos[0].id);
enviarBT(dados) sendBluetooth()

Envia dados JSON para o dispositivo conectado via Bluetooth.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

dados
↩ Promise
await enviarBT({ mensagem: "Olá por BT" });
procurarWiFi() scanWiFi()

Busca dispositivos na rede local via NSD (mesma rede WiFi).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<[{ id, nome, host, porta }]>
const dispositivos = await procurarWiFi();
conectarWiFi(id) connectWiFi()

Conecta a um dispositivo WiFi local encontrado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

id
↩ Promise
await conectarWiFi(dispositivos[0].id);
enviarWiFi(dados) sendWiFi()

Envia dados JSON para o dispositivo conectado via WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

dados
↩ Promise
await enviarWiFi({ mensagem: "Olá por WiFi" });
obterLinkInicial() getInitialLink()

Retorna o deep link que abriu o app (se houver).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const link = await obterLinkInicial(); if (link) console.log("Abriu via:", link);
aoConectarBT(callback) onBluetoothConnect()

Dispara quando um dispositivo Bluetooth se conecta ao seu app (modo Host P2P).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dispositivo)
↩ Function (cancelar)
aoConectarBT((dispositivo) => { console.log("Conectado:", dispositivo.nome); });
aoReceberDadosBT(callback) onBluetoothData()

Dispara quando recebe dados JSON via Bluetooth de outro dispositivo.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoReceberDadosBT((dados) => { console.log("Recebido:", dados); });
aoDarErroBT(callback) onBluetoothError()

Dispara quando ocorre um erro na conexão Bluetooth.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(erro)
↩ Function (cancelar)
aoDarErroBT((erro) => { console.log("Erro BT:", erro.mensagem); });
aoConectarWiFi(callback) onWiFiConnect()

Dispara quando um dispositivo se conecta via WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dispositivo)
↩ Function (cancelar)
aoConectarWiFi((dispositivo) => { console.log("WiFi conectado:", dispositivo.nome); });
aoReceberDadosWiFi(callback) onWiFiData()

Dispara quando recebe dados JSON via WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoReceberDadosWiFi((dados) => { console.log("Recebido WiFi:", dados); });
aoDarErroWiFi(callback) onWiFiError()

Dispara quando ocorre um erro na conexão WiFi local.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(erro)
↩ Function (cancelar)
aoDarErroWiFi((erro) => { console.log("Erro WiFi:", erro.mensagem); });
aoAbrirLink(callback) onDeepLink()

Dispara quando o app recebe um deep link enquanto já está aberto.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(link)
↩ Function (cancelar)
aoAbrirLink((link) => { console.log("Link recebido:", link.url); });

Interface Nativa

Controle de tema, tela, fullscreen, ícone flutuante, lanterna e clipboard.

toast(mensagem) toast()

Exibe uma mensagem rápida (toast nativo do Android).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

mensagem
↩ void
toast("Operação concluída!");
vibrar(ms) vibrate()

Vibra o aparelho pela duração em milissegundos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

duracaoMs
↩ void
vibrar(250);
lanterna(ligar) flashlight()

Liga ou desliga o flash/lanterna do aparelho.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ligar (boolean)
↩ Promise<{ status }>
await lanterna(true);
definirCorTema(cor) setThemeColor()

Altera a cor da barra de status e navegação do Android em tempo real.

Por que usar?

Imersão completa. Evita que o app pareça um simples site num navegador, mesclando a barra do sistema à cor da sua UI.

Como usar / Dicas

Dispare sempre que o usuário mudar de tela, alterando a barra superior para combinar com o header atual.

Atenção / Cuidados

Nenhum efeito colateral grave. O contraste dos ícones da barra (claro/escuro) é ajustado automaticamente.

cor (hex)
↩ Promise
await definirCorTema("#FF5722");
fullscreen(ativar) fullscreen()

Ativa ou desativa o modo tela cheia.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ativar (boolean)
↩ void
fullscreen(true);
manterTelaLigada(ativar) keepScreenOn()

Impede que a tela se apague automaticamente.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ativar (boolean)
↩ Promise
await manterTelaLigada(true);
brilhoTela(valor) setScreenBrightness()

Ajusta o brilho da tela (0 a 1).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

valor (0-1)
↩ Promise
await brilhoTela(0.8);
copiarTexto(texto) copyText()

Copia o texto para a área de transferência.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

texto
↩ Promise
await copiarTexto("codigo-abc-123");
iniciarIconeFlutuante(opcoes?) startFloatingIcon()

Exibe um ícone flutuante do app sobre outros apps.

Por que usar?

Para apps que precisam ser acessados como ferramenta enquanto o usuário usa outros aplicativos (ex: app motorista de app, calculadora overlay).

Como usar / Dicas

Chame e o ícone do seu app ficará sobre a tela. A opacidade também pode ser reduzida.

Atenção / Cuidados

Requer a perigosa permissão `SYSTEM_ALERT_WINDOW`. A bridge guia o usuário até as configurações avançadas para ativar se necessário.

opacidade?
↩ Promise
await iniciarIconeFlutuante({ opacidade: 0.85 });
aguardar(ms) loading()

Cria uma pausa com Promise para usar com await, sem travar a WebView.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

ms
↩ Promise
await toast("Começando..."); await aguardar(3000); await toast("Pronto!");
alternarLanterna() toggleFlashlight()

Alterna o estado da lanterna (liga se desligada, desliga se ligada).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ enabled }>
const status = await alternarLanterna(); console.log("Lanterna ligada?", status.enabled);
definirOpacidadeIconeFlutuante(valor) setFloatingIconOpacity()

Ajusta a opacidade do ícone flutuante em tempo real.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

valor (0-1)
↩ Promise
await definirOpacidadeIconeFlutuante(0.55);
lerTextoCopiado() readClipboard()

Lê o texto que está na área de transferência.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
const texto = await lerTextoCopiado(); console.log("Copiado:", texto);

Segurança & Biometria

Autenticação biométrica, bloqueio de tela, storage seguro e sessões.

autenticarBiometria(opcoes) authenticateBiometric()

Solicita autenticação por impressão digital ou reconhecimento facial.

Por que usar?

Proteção extra sem atrito para dados sensíveis, compras ou login automático.

Como usar / Dicas

Dispare no início ou antes de uma transação perigosa. Retorna true se a digital (ou face) for aprovada.

Atenção / Cuidados

Retornará falso (ou erro) se o aparelho não tiver sensor ou não tiver nenhuma biometria cadastrada no sistema.

titulodescricao
↩ Promise<{ authenticated, supported, canceled }>
const bio = await autenticarBiometria({ titulo: "Confirmar acesso", descricao: "Use sua biometria" }); if (bio.authenticated) { /* acesso ok */ }
solicitarBloqueio(opcoes) requestDeviceLock()

Pede a senha de tela / PIN / padrão do aparelho.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

titulodescricao
↩ Promise<{ autenticado, suportado, cancelado }>
const auth = await solicitarBloqueio({ titulo: "Área Restrita", descricao: "Confirme sua senha de tela" });
salvarSeguro(chave, valor) saveSecure()

Salva um dado criptografado no armazenamento seguro do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chavevalor
↩ Promise
await salvarSeguro("token", "jwt-abc-123");
lerSeguro(chave) readSecure()

Lê um dado do armazenamento seguro criptografado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chave
↩ Promise
const token = await lerSeguro("token");
salvarNaSessao(chave, valor) sessionSet()

Salva um dado na sessão (persiste até o app ser fechado).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

chavevalor
↩ Promise
await salvarNaSessao("sessaoAtiva", "true");
instalarAtualizacao(url, opcoes?) installUpdate()

Baixa e instala um APK de atualização (OTA). Mostra modal de progresso.

Por que usar?

Atualizações OTA (Over-The-Air) para contornar a Play Store e entregar melhorias aos usuários diretamente.

Como usar / Dicas

Apenas passe a URL de um arquivo APK válido hospedado em servidor público. O app cuida do download e de invocar a tela de update.

Atenção / Cuidados

Se o app for o Android 8+, exige a permissão `Instalar apps desconhecidos`, a tela será aberta automaticamente a primeira vez para o usuário aceitar.

urltitulo?mensagem?
↩ Promise
await instalarAtualizacao("https://servidor.com/app.apk", { titulo: "Atualizando...", mensagem: "Não feche o app" });
solicitarPermissaoInstalacao() requestInstallPermission()

Solicita permissão para instalar APKs (Android 8+). Abre a tela nativa de configurações.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ suportado, solicitado, permitido }>
const perm = await solicitarPermissaoInstalacao(); if (perm.permitido) { await instalarAtualizacao("https://site.com/app.apk"); }
solicitarPermissaoArmazenamento() requestStoragePermission()

Solicita acesso completo a arquivos (Android 11+). Em versões anteriores, usa popup tradicional.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ permission, granted, requiresSettings, requested, settingsOpened }>
const perm = await solicitarPermissaoArmazenamento(); if (perm.granted) { console.log("Acesso liberado!"); }
statusPermissaoArmazenamento() storagePermissionStatus()

Consulta silenciosamente se tem permissão de armazenamento, sem abrir tela.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ granted }>
const status = await statusPermissaoArmazenamento(); console.log("Tem permissão?", status.granted);

Eventos do Sistema

Ouça eventos nativos do Android: ciclo do app, hardware, conectividade e mais.

aoEvento(nome, callback) onEvent()

Ouve qualquer evento nativo. Retorna uma função para cancelar a escuta.

Por que usar?

Poder absoluto sobre os ciclos de vida nativos (background/foreground/etc).

Como usar / Dicas

Assine o evento logo no início (ex: na sua store JS) e destrua no encerramento (se houver).

Atenção / Cuidados

O `aoVoltarParaApp` é inteligente e não é disparado se o app só abriu a tela da Câmera e fechou. Ele só dispara quando sai pra tela inicial do celular real.

nomecallback
↩ Function (cancelar)
const parar = aoEvento("app:background", (e) => { console.log("App saiu da frente"); }); // Para parar: parar();
aoMinimizar(callback) onMinimize()

Dispara quando o app vai para segundo plano.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback
↩ Function (cancelar)
aoMinimizar(() => console.log("Minimizou"));
aoConectarUSB(callback) onUSBConnect()

Dispara quando um cabo USB é conectado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoConectarUSB((dados) => console.log("USB conectado", dados));
aoConectarFone(callback) onHeadphoneConnect()

Dispara quando um fone de ouvido é conectado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoConectarFone((dados) => console.log("Fone:", dados.dispositivo));
aoMudarVolume(callback) onVolumeChange()

Dispara quando o volume é alterado.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoMudarVolume((dados) => console.log("Volume:", dados.midia.atual));
aoAbrirTeclado(callback) onKeyboardOpen()

Dispara quando o teclado virtual aparece.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoAbrirTeclado((d) => console.log("Teclado:", d.alturaTeclado));
aoTirarPrint(callback) onScreenshot()

Dispara quando o usuário tira um print da tela.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoTirarPrint((dados) => console.log("Print!", dados.uri));
aoVoltarParaApp(callback) onResume()

Dispara quando o usuário volta ao app após ter saído. O html2apk suprime falsos positivos de telas nativas bloqueantes.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback
↩ Function (cancelar)
aoVoltarParaApp(() => { console.log("Bem-vindo de volta!"); carregarDadosAtualizados(); });

Sistema & Navegação

Informações do dispositivo, navegação, links externos e controle do app.

infoDispositivo() deviceInfo()

Retorna informações do aparelho (modelo, versão Android, etc).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ modelo, fabricante, versaoAndroid, ... }>
const info = await infoDispositivo();
infoBateria() batteryInfo()

Retorna o nível e status da bateria.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ nivel, carregando }>
const bat = await infoBateria();
infoRede() networkInfo()

Retorna o status da conexão de rede.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ conectado, tipo }>
const rede = await infoRede();
abrirNoApp(url) openInApp()

Navega para uma URL dentro do próprio WebView do APK.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

urlsubstituir?
↩ void
abrirNoApp("/sobre.html"); abrirNoApp("#/pedido/123");
abrirForaDoApp(url) openOutsideApp()

Abre uma URL no navegador padrão do Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

url
↩ void
abrirForaDoApp("https://google.com");
minimizarApp() minimizeApp()

Minimiza o app (vai para segundo plano).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise
await minimizarApp();
fecharApp() exitApp()

Encerra o app completamente. Use com cuidado!

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ void
// Use somente após salvar estado! fecharApp();
definirPapelParede(imagem, opcoes?) setWallpaper()

Define um papel de parede (tela de início, bloqueio ou ambos).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

imagemalvo?
↩ Promise<{ applied }>
await definirPapelParede("wallpaper.jpg", { alvo: "inicio" });
abrirWhatsapp(numero, mensagem) openWhatsapp()

Abre o WhatsApp com número e mensagem pré-preenchidos.

Por que usar?

Atendimento via chat, vendas diretas ou suporte rápido.

Como usar / Dicas

Coloque um número +55... e a mensagem pré-formatada.

Atenção / Cuidados

Se o WhatsApp não estiver instalado, a função tentará usar um esquema de intent de fallback, mas tenha sempre um try/catch.

numeromensagem?
↩ Promise
await abrirWhatsapp("5511999999999", "Oi, vim pelo app!");
discar(numero) dial()

Abre o discador do Android com o número preenchido.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

numero
↩ Promise
await discar("11999999999");
abrirMapa(endereco) openMap()

Abre o Google Maps com um endereço ou coordenadas.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

endereco
↩ Promise
await abrirMapa("Avenida Paulista, São Paulo");
verificarPacote(nome) checkPackage()

Verifica se um app está instalado. Busca inteligente por nome ou packageId.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nome
↩ Promise<{ exists, version, packageId, appName }>
const wpp = await verificarPacote("WhatsApp"); if (wpp.exists) console.log("v" + wpp.version);
abrirPacote(packageId) openPackage()

Abre outro app instalado no Android.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

packageId
↩ Promise<{ success }>
const r = await abrirPacote("com.whatsapp"); if (!r.success) toast("App não encontrado");
apontarArquivo(nome, extensao, abrir?) locateFile()

Encontra e aponta para um arquivo na pasta Downloads. Busca inteligente por palavra-chave.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

nomeextensaoabrir?
↩ Promise<{ path, found }>
const f = await apontarArquivo("relatorio", "pdf", false); if (f.found) console.log(f.path);
instalarPacote(path) installPackage()

Abre a tela de instalação nativa do Android para um APK. Use "select" para abrir o seletor.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

path
↩ Promise
await instalarPacote("select"); // Abre seletor // ou await instalarPacote(caminho.path); // Instala direto
statusPermissoes(array) permissionsStatus()

Consulta o status de múltiplas permissões sem solicitá-las.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

permissoes[]
↩ Promise
const p = await statusPermissoes(["CAMERA", "RECORD_AUDIO"]); console.log(p);
aumentarVolume(stream, passos) volumeUp()

Aumenta o volume em N passos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

streampassos
↩ Promise
await aumentarVolume("midia", 1);
diminuirVolume(stream, passos) volumeDown()

Diminui o volume em N passos.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

streampassos
↩ Promise
await diminuirVolume("midia", 1);

Compartilhamento

Receba arquivos, textos e links compartilhados de outros apps e compartilhe o próprio APK.

compartilharApp() shareApp() / share_me()

Compartilha o próprio APK do app com outros.

Por que usar?

Viralidade. Permite que o usuário envie o APK atual diretamente para o WhatsApp de um amigo, sem usar lojas.

Como usar / Dicas

Ative ao clicar num botão "Convidar um Amigo".

Atenção / Cuidados

Pode não ter 100% de sucesso se o aplicativo for um AAB fatiado (Bundle split) da Play Store. Para APKs standalone funciona perfeitamente.

↩ Promise<{ ok }>
await compartilharApp();
obterCompartilhamentoInicial() getInitialShare()

Retorna os dados do compartilhamento que abriu o app (se houver).

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

↩ Promise<{ tipo, uri?, texto? }>
const share = await obterCompartilhamentoInicial(); if (share) console.log(share.tipo, share.uri);
aoReceberCompartilhamento(callback) onShareReceived()

Dispara quando o app recebe um compartilhamento de outro app enquanto já está aberto.

Por que usar?

Permite estender as capacidades do seu PWA acessando hardwares e APIs do sistema de forma nativa e otimizada.

Como usar / Dicas

Utilize com await e manipule erros via try/catch ou Promises.

Atenção / Cuidados

Algumas ações acionam permissões no Android. Esteja preparado para o caso do usuário negar e exiba um aviso prévio (rationale) antes de pedir a ação pela primeira vez.

callback(dados)
↩ Function (cancelar)
aoReceberCompartilhamento((dados) => { console.log(dados.tipo, dados.uri || dados.texto); });
agendarNotificacao(opcoes)scheduleNotification()

Agenda uma notificação para o futuro. Funciona mesmo com o app fechado.

titulotextoquandoaoClicar?
↩ Promise<{ id }>
await agendarNotificacao({ titulo: "Lembrete", texto: "Hora de abrir o app", quando: Date.now() + 60000 });
agendarLoopNotificacoes(opcoes)scheduleNotificationLoop()

Cria um loop de notificações recorrentes. O Android dispara a próxima da lista a cada intervalo.

aCadanotificacoes[]
↩ Promise<{ id }>
const loop = await agendarLoopNotificacoes({ aCada: "12h", notificacoes: [ { titulo: "Beba água", texto: "Hidrate-se" }, { titulo: "Alongamento", texto: "Pausa rápida" } ] });
cancelarNotificacao(id)cancelNotification()

Cancela uma notificação agendada ou loop pelo ID.

id
↩ Promise<void>
await cancelarNotificacao(loop.id);
aoClicarNotificacao(callback)onNotificationClick()

Dispara quando o usuário toca em uma notificação.

callback(evento)
↩ Function (cancelar)
aoClicarNotificacao((evento) => { console.log(evento.id, evento.aoClicar); });
solicitarPermissaoPush()requestPushPermission()

Solicita permissão de push remoto (OneSignal). Requer oneSignalAppId no app.json.

↩ Promise<{ granted }>
const perm = await solicitarPermissaoPush();
identificarUsuarioPush(id)loginPushUser()

Vincula um ID de usuário ao OneSignal para push direcionado.

id
↩ void
identificarUsuarioPush("user-123");
adicionarTagPush(chave, valor)addPushTag()

Adiciona uma tag ao perfil OneSignal do usuário para segmentação.

chavevalor
↩ void
adicionarTagPush("plano", "premium");
agendarNotificacoes(array)scheduleNotifications()

Agenda várias notificações de uma vez.

notificacoes[]
↩ Promise<[{ id }]>
await agendarNotificacoes([ { titulo: "Primeiro", texto: "Msg 1", quando: Date.now() + 60000 }, { titulo: "Segundo", texto: "Msg 2", quando: Date.now() + 120000 } ]);
solicitarPermissaoNotificacoes()requestNotificationPermission()

Solicita permissão de notificações (Android 13+).

↩ Promise<boolean>
const permitido = await solicitarPermissaoNotificacoes(); if (permitido) { /* pode notificar */ }
aoClicarPush(callback)onPushClick()

Dispara quando o usuário clica em uma notificação push remota (OneSignal).

callback(evento)
↩ Function (cancelar)
const parar = aoClicarPush((evento) => { abrirNoApp("#/notificacoes"); });

Câmera & Mídia

Capture fotos, vídeos, escaneie QR Codes e reconheça texto em imagens.

tirarFoto(opcoes?)takePhoto()

Abre a câmera e tira uma foto. Pode retornar em base64.

base64?qualidade?
↩ Promise<{ base64, mimeType, uri }>
const foto = await tirarFoto({ base64: true }); img.src = `data:${foto.mimeType};base64,${foto.base64}`;
capturarVideo()captureVideo()

Abre a câmera no modo de vídeo.

↩ Promise<{ uri, nome, mimeType }>
const video = await capturarVideo();
escanearQRCode()scanQRCode()

Abre o scanner de QR Code e retorna o texto identificado.

↩ Promise<{ text, format, cancelled }>
const qr = await escanearQRCode(); if (qr) console.log(qr.text);
ocr(imagem)recognizeText()

Reconhece texto numa imagem usando ML Kit local (offline).

imagem
↩ Promise<{ texto, blocos }>
const resultado = await ocr(foto); console.log(resultado.texto);
capturarTela()captureScreen()

Captura a tela atual do WebView e retorna como Data URL.

↩ Promise<{ dataUrl }>
const print = await capturarTela(); img.src = print.dataUrl;

Arquivos & Storage

Salve, leia, compartilhe e gerencie arquivos dentro do app ou na galeria.

salvarArquivo(nome, dados)saveFile()

Salva um arquivo no armazenamento do app. Ou abre o seletor nativo usando formato de objeto.

nome/opcoesconteudo
↩ Promise<{ uri }>
await salvarArquivo("perfil.json", { nome: "Ana", plano: "premium" });
lerArquivo(nome)readFile()

Lê um arquivo salvo no app. Retorna o conteúdo parseado.

nome
↩ Promise<dados>
const perfil = await lerArquivo("perfil.json"); console.log(perfil.nome);
listarArquivos()listFiles()

Lista todos os arquivos salvos no armazenamento do app.

↩ Promise<Array>
const arquivos = await listarArquivos();
excluirArquivo(nome)deleteFile()

Exclui um arquivo do armazenamento do app.

nome
↩ Promise<void>
await excluirArquivo("perfil.json");
escolherArquivo(opcoes?)pickFile()

Abre o seletor de arquivos do Android.

tipos?multiplo?
↩ Promise<{ uri, nome, mimeType, tamanho }>
const pdf = await escolherArquivo({ tipos: ["application/pdf"] });
escolherImagem()pickImage()

Abre o Photo Picker (Android 13+) ou galeria.

↩ Promise<{ uri, nome, mimeType, tamanho }>
const img = await escolherImagem();
baixarArquivo(url, nome)downloadFile()

Baixa um arquivo da web e salva no app. Mostra progresso na notificação.

urlnomegaleria?
↩ Promise<{ uri }>
await baixarArquivo("https://exemplo.com/relatorio.pdf", "relatorio.pdf");
compartilhar(opcoes)share()

Abre o menu de compartilhamento do Android com texto, link ou arquivo.

titulo?texto?url?arquivo?
↩ Promise<{ ok }>
await compartilhar({ titulo: "Confira!", texto: "Veja esse conteúdo", url: "https://exemplo.com" });
lerArquivoCompleto(nome)readFileInfo()

Lê um arquivo com todos os metadados: uri, mimeType, nome, tamanho e tipo (imagem/video/audio/documento).

nome
↩ Promise<{ uri, mimeType, name, nome, size, tamanho, type, tipo }>
const info = await lerArquivoCompleto("foto.png"); console.log(info.mimeType, info.tamanho);
arquivoExiste(nome)fileExists()

Verifica se um arquivo existe no armazenamento do app.

nome
↩ Promise<boolean>
const existe = await arquivoExiste("perfil.json"); if (!existe) await salvarArquivo("perfil.json", {});
abrirArquivo(nome)openFile()

Abre um arquivo salvo no app com o app padrão do Android (PDF no leitor, imagem na galeria, etc).

nome
↩ Promise<void>
await abrirArquivo("relatorio.pdf");
compartilharArquivo(nome)shareFile()

Compartilha um arquivo salvo no app via menu nativo do Android.

nome
↩ Promise<{ ok }>
await compartilharArquivo("relatorio.pdf");
escolherArquivos(opcoes)pickFiles()

Abre o seletor para múltiplos arquivos.

multiplo?tipos?
↩ Promise<Array<{ uri, nome, mimeType, tamanho }>>
const arquivos = await escolherArquivos({ multiplo: true }); console.log(arquivos.length, "arquivos selecionados");
escolherImagens(opcoes)pickImages()

Abre o Photo Picker para múltiplas imagens (Android 13+).

multiplas?
↩ Promise<Array<{ uri, nome, mimeType, tamanho }>>
const fotos = await escolherImagens({ multiplas: true }); fotos.forEach(f => console.log(f.nome));
baixarBase64(nome, base64, opcoes)downloadBase64()

Salva dados base64 como arquivo. Útil para salvar imagens geradas no canvas.

nomebase64mimeType?galeria?
↩ Promise<{ uri, publicUri? }>
await baixarBase64("foto.png", base64String, { mimeType: "image/png", galeria: true });
baixarArquivoLocal(arquivo, nome)downloadLocalFile()

Copia um arquivo (de escolherArquivo) para o armazenamento do app com notificação de progresso.

arquivonome
↩ Promise<{ uri }>
const arquivo = await escolherArquivo(); if (arquivo) { await baixarArquivoLocal(arquivo, "copia-" + arquivo.name); }
infoArmazenamento()storageInfo()

Retorna informações de espaço em disco disponível.

↩ Promise<{ total, available, used }>
const espaco = await infoArmazenamento(); console.log("Disponível:", espaco.available);

Áudio & Voz

Grave áudio, sintetize voz, reconheça fala e controle o volume do dispositivo.

ouvirMic()startMic()

Inicia a gravação de áudio pelo microfone. Solicita permissão automaticamente.

↩ Promise<{ recording, settingsOpened }>
await ouvirMic(); // ... Quando quiser parar: const audio = await pararMic();
pararMic()stopMic()

Para a gravação e retorna o áudio em base64.

↩ Promise<{ base64, mimeType, durationMs }>
const audio = await pararMic(); const player = new Audio(`data:${audio.mimeType};base64,${audio.base64}`); player.play();
falar(texto, opcoes?)speak()

Fala o texto em voz alta usando o Text-to-Speech do Android.

textoidioma?velocidade?
↩ Promise<void>
await falar("Olá mundo!", { idioma: "pt-BR", velocidade: 1 });
ouvir(opcoes?)speechToText()

Ativa o reconhecimento de voz e transcreve o áudio.

idioma?
↩ Promise<{ texto, error }>
const voz = await ouvir({ idioma: "pt-BR" }); console.log(voz.texto);
volumeAtual()getVolume()

Retorna os volumes atuais e máximos do dispositivo.

↩ Promise<{ midia, toque, alarme }>
const vol = await volumeAtual(); console.log(vol.midia.atual, vol.midia.maximo);
definirVolume(stream, porcentagem)setVolume()

Ajusta o volume de um stream (midia, toque, alarme).

streamporcentagemmostrarUI?
↩ Promise<void>
await definirVolume("midia", 0.5, { mostrarUI: true });
pararFala()stopSpeech()

Para a fala TTS em andamento.

↩ Promise<void>
await falar("Texto longo..."); // Interromper: await pararFala();

Localização & Sensores

GPS, velocímetro, NFC, proximidade, acelerômetro e orientação do aparelho.

obterLocalizacao(opcoes?)getLocation()

Obtém a posição GPS atual. Solicita permissão automaticamente.

altaPrecisao?timeoutMs?
↩ Promise<{ latitude, longitude, precisao, velocidadeKmh }>
const local = await obterLocalizacao({ altaPrecisao: true }); console.log(local.latitude, local.longitude);
acompanharLocalizacao(opcoes?)watchLocation()

Inicia o monitoramento contínuo da posição GPS.

intervaloMs?
↩ Promise<{ watchId }>
const watch = await acompanharLocalizacao({ intervaloMs: 5000 });
medirVelocidade(callback)measureSpeed()

Monitora a velocidade em km/h em tempo real via GPS.

callback(kmh, local)
↩ Promise<Function (parar)>
const parar = await medirVelocidade((kmh, local) => { console.log(`Velocidade: ${kmh} km/h`); });
aoSacudirCelular(callback)onPhoneShake()

Dispara quando o celular é sacudido com força.

callback(dados)
↩ Function (cancelar)
aoSacudirCelular((dados) => { console.log("Sacudiu!", dados.forca); });
aoNFC(callback)onNFC()

Escuta tags NFC quando o app está em primeiro plano.

callback(dados)
↩ Function (cancelar)
aoNFC((dados) => { console.log("Tag NFC", dados.id, dados.mensagens); });
aoAproximarObjeto(callback)onProximityNear()

Dispara quando o sensor de proximidade detecta algo perto.

callback(dados)
↩ Function (cancelar)
aoAproximarObjeto((dados) => { console.log("Distância:", dados.distancia); });

Conectividade

Bluetooth, WiFi local entre dispositivos, deep links e redes.

procurarBT()scanBluetooth()

Busca dispositivos Bluetooth pareados ou visíveis.

↩ Promise<[{ id, nome, host }]>
const dispositivos = await procurarBT();
conectarBT(id)connectBluetooth()

Conecta a um dispositivo Bluetooth encontrado.

id
↩ Promise<void>
await conectarBT(dispositivos[0].id);
enviarBT(dados)sendBluetooth()

Envia dados JSON para o dispositivo conectado via Bluetooth.

dados
↩ Promise<void>
await enviarBT({ mensagem: "Olá por BT" });
procurarWiFi()scanWiFi()

Busca dispositivos na rede local via NSD (mesma rede WiFi).

↩ Promise<[{ id, nome, host, porta }]>
const dispositivos = await procurarWiFi();
conectarWiFi(id)connectWiFi()

Conecta a um dispositivo WiFi local encontrado.

id
↩ Promise<void>
await conectarWiFi(dispositivos[0].id);
enviarWiFi(dados)sendWiFi()

Envia dados JSON para o dispositivo conectado via WiFi local.

dados
↩ Promise<void>
await enviarWiFi({ mensagem: "Olá por WiFi" });
obterLinkInicial()getInitialLink()

Retorna o deep link que abriu o app (se houver).

↩ Promise<string>
const link = await obterLinkInicial(); if (link) console.log("Abriu via:", link);
aoConectarBT(callback)onBluetoothConnect()

Dispara quando um dispositivo Bluetooth se conecta ao seu app (modo Host P2P).

callback(dispositivo)
↩ Function (cancelar)
aoConectarBT((dispositivo) => { console.log("Conectado:", dispositivo.nome); });
aoReceberDadosBT(callback)onBluetoothData()

Dispara quando recebe dados JSON via Bluetooth de outro dispositivo.

callback(dados)
↩ Function (cancelar)
aoReceberDadosBT((dados) => { console.log("Recebido:", dados); });
aoDarErroBT(callback)onBluetoothError()

Dispara quando ocorre um erro na conexão Bluetooth.

callback(erro)
↩ Function (cancelar)
aoDarErroBT((erro) => { console.log("Erro BT:", erro.mensagem); });
aoConectarWiFi(callback)onWiFiConnect()

Dispara quando um dispositivo se conecta via WiFi local.

callback(dispositivo)
↩ Function (cancelar)
aoConectarWiFi((dispositivo) => { console.log("WiFi conectado:", dispositivo.nome); });
aoReceberDadosWiFi(callback)onWiFiData()

Dispara quando recebe dados JSON via WiFi local.

callback(dados)
↩ Function (cancelar)
aoReceberDadosWiFi((dados) => { console.log("Recebido WiFi:", dados); });
aoDarErroWiFi(callback)onWiFiError()

Dispara quando ocorre um erro na conexão WiFi local.

callback(erro)
↩ Function (cancelar)
aoDarErroWiFi((erro) => { console.log("Erro WiFi:", erro.mensagem); });
aoAbrirLink(callback)onDeepLink()

Dispara quando o app recebe um deep link enquanto já está aberto.

callback(link)
↩ Function (cancelar)
aoAbrirLink((link) => { console.log("Link recebido:", link.url); });

Interface Nativa

Controle de tema, tela, fullscreen, ícone flutuante, lanterna e clipboard.

toast(mensagem)toast()

Exibe uma mensagem rápida (toast nativo do Android).

mensagem
↩ void
toast("Operação concluída!");
vibrar(ms)vibrate()

Vibra o aparelho pela duração em milissegundos.

duracaoMs
↩ void
vibrar(250);
lanterna(ligar)flashlight()

Liga ou desliga o flash/lanterna do aparelho.

ligar (boolean)
↩ Promise<{ status }>
await lanterna(true);
definirCorTema(cor)setThemeColor()

Altera a cor da barra de status e navegação do Android em tempo real.

cor (hex)
↩ Promise<void>
await definirCorTema("#FF5722");
fullscreen(ativar)fullscreen()

Ativa ou desativa o modo tela cheia.

ativar (boolean)
↩ void
fullscreen(true);
manterTelaLigada(ativar)keepScreenOn()

Impede que a tela se apague automaticamente.

ativar (boolean)
↩ Promise<void>
await manterTelaLigada(true);
brilhoTela(valor)setScreenBrightness()

Ajusta o brilho da tela (0 a 1).

valor (0-1)
↩ Promise<void>
await brilhoTela(0.8);
copiarTexto(texto)copyText()

Copia o texto para a área de transferência.

texto
↩ Promise<void>
await copiarTexto("codigo-abc-123");
iniciarIconeFlutuante(opcoes?)startFloatingIcon()

Exibe um ícone flutuante do app sobre outros apps.

opacidade?
↩ Promise<void>
await iniciarIconeFlutuante({ opacidade: 0.85 });
aguardar(ms)loading()

Cria uma pausa com Promise para usar com await, sem travar a WebView.

ms
↩ Promise<void>
await toast("Começando..."); await aguardar(3000); await toast("Pronto!");
alternarLanterna()toggleFlashlight()

Alterna o estado da lanterna (liga se desligada, desliga se ligada).

↩ Promise<{ enabled }>
const status = await alternarLanterna(); console.log("Lanterna ligada?", status.enabled);
definirOpacidadeIconeFlutuante(valor)setFloatingIconOpacity()

Ajusta a opacidade do ícone flutuante em tempo real.

valor (0-1)
↩ Promise<void>
await definirOpacidadeIconeFlutuante(0.55);
lerTextoCopiado()readClipboard()

Lê o texto que está na área de transferência.

↩ Promise<string>
const texto = await lerTextoCopiado(); console.log("Copiado:", texto);
solicitarCriacaoWidget()requestWidgetCreation()

Solicita ao usuário que adicione o widget do aplicativo na tela inicial (Apenas Android 8+).

↩ Promise<void>
await solicitarCriacaoWidget();
atualizarWidget(opcoes)updateWidget()

Atualiza o Widget do app na tela inicial do usuário com novas informações ou cores.

titulodescricaofundofundoCorcorTexto
↩ Promise<void>
await atualizarWidget({ titulo: "Novo Alerta", descricao: "Seu processamento terminou!", fundo: true, fundoCor: "#000000", corTexto: "#ffffff" });
entrarPip(opcoes?)enterPip()

Coloca o aplicativo em modo Picture-in-Picture (PiP), permitindo que ele continue visível em uma janela flutuante (Android 8+).

↩ Promise<void>
await entrarPip({ aspectRatio: "16:9" });

Segurança & Biometria

Autenticação biométrica, bloqueio de tela, storage seguro e sessões.

autenticarBiometria(opcoes)authenticateBiometric()

Solicita autenticação por impressão digital ou reconhecimento facial.

titulodescricao
↩ Promise<{ authenticated, supported, canceled }>
const bio = await autenticarBiometria({ titulo: "Confirmar acesso", descricao: "Use sua biometria" }); if (bio.authenticated) { /* acesso ok */ }
solicitarBloqueio(opcoes)requestDeviceLock()

Pede a senha de tela / PIN / padrão do aparelho.

titulodescricao
↩ Promise<{ autenticado, suportado, cancelado }>
const auth = await solicitarBloqueio({ titulo: "Área Restrita", descricao: "Confirme sua senha de tela" });
salvarSeguro(chave, valor)saveSecure()

Salva um dado criptografado no armazenamento seguro do Android.

chavevalor
↩ Promise<void>
await salvarSeguro("token", "jwt-abc-123");
lerSeguro(chave)readSecure()

Lê um dado do armazenamento seguro criptografado.

chave
↩ Promise<valor>
const token = await lerSeguro("token");
salvarNaSessao(chave, valor)sessionSet()

Salva um dado na sessão (persiste até o app ser fechado).

chavevalor
↩ Promise<void>
await salvarNaSessao("sessaoAtiva", "true");
instalarAtualizacao(url, opcoes?)installUpdate()

Baixa e instala um APK de atualização (OTA). Mostra modal de progresso.

urltitulo?mensagem?
↩ Promise<void>
await instalarAtualizacao("https://servidor.com/app.apk", { titulo: "Atualizando...", mensagem: "Não feche o app" });
solicitarPermissaoInstalacao()requestInstallPermission()

Solicita permissão para instalar APKs (Android 8+). Abre a tela nativa de configurações.

↩ Promise<{ suportado, solicitado, permitido }>
const perm = await solicitarPermissaoInstalacao(); if (perm.permitido) { await instalarAtualizacao("https://site.com/app.apk"); }
solicitarPermissaoArmazenamento()requestStoragePermission()

Solicita acesso completo a arquivos (Android 11+). Em versões anteriores, usa popup tradicional.

↩ Promise<{ permission, granted, requiresSettings, requested, settingsOpened }>
const perm = await solicitarPermissaoArmazenamento(); if (perm.granted) { console.log("Acesso liberado!"); }
statusPermissaoArmazenamento()storagePermissionStatus()

Consulta silenciosamente se tem permissão de armazenamento, sem abrir tela.

↩ Promise<{ granted }>
const status = await statusPermissaoArmazenamento(); console.log("Tem permissão?", status.granted);

Eventos do Sistema

Ouça eventos nativos do Android: ciclo do app, hardware, conectividade e mais.

aoEvento(nome, callback)onEvent()

Ouve qualquer evento nativo. Retorna uma função para cancelar a escuta.

nomecallback
↩ Function (cancelar)
const parar = aoEvento("app:background", (e) => { console.log("App saiu da frente"); }); // Para parar: parar();
aoMinimizar(callback)onMinimize()

Dispara quando o app vai para segundo plano.

callback
↩ Function (cancelar)
aoMinimizar(() => console.log("Minimizou"));
aoConectarUSB(callback)onUSBConnect()

Dispara quando um cabo USB é conectado.

callback(dados)
↩ Function (cancelar)
aoConectarUSB((dados) => console.log("USB conectado", dados));
aoConectarFone(callback)onHeadphoneConnect()

Dispara quando um fone de ouvido é conectado.

callback(dados)
↩ Function (cancelar)
aoConectarFone((dados) => console.log("Fone:", dados.dispositivo));
aoMudarVolume(callback)onVolumeChange()

Dispara quando o volume é alterado.

callback(dados)
↩ Function (cancelar)
aoMudarVolume((dados) => console.log("Volume:", dados.midia.atual));
aoAbrirTeclado(callback)onKeyboardOpen()

Dispara quando o teclado virtual aparece.

callback(dados)
↩ Function (cancelar)
aoAbrirTeclado((d) => console.log("Teclado:", d.alturaTeclado));
aoTirarPrint(callback)onScreenshot()

Dispara quando o usuário tira um print da tela.

callback(dados)
↩ Function (cancelar)
aoTirarPrint((dados) => console.log("Print!", dados.uri));
aoVoltarParaApp(callback)onResume()

Dispara quando o usuário volta ao app após ter saído. O html2apk suprime falsos positivos de telas nativas bloqueantes.

callback
↩ Function (cancelar)
aoVoltarParaApp(() => { console.log("Bem-vindo de volta!"); carregarDadosAtualizados(); });

Contatos & Agenda

Gerencie e pesquise os contatos na agenda do dispositivo.

solicitarPermissaoContatos()requestContactsPermission()

Solicita permissão ao usuário para ler a agenda de contatos.

↩ Promise<{ granted, error }>
const perm = await solicitarPermissaoContatos(); if (perm.granted) { // Ler contatos }
pesquisarContato(nome)searchContact()

Pesquisa contatos na agenda pelo nome ou número. Passe um termo vazio para retornar toda a agenda.

nome
↩ Promise<Array<{ nome, numero }>>
const maria = await pesquisarContato("Maria"); console.log(maria); // [{ nome: "Maria da Silva", numero: "+551199999999" }]

Sistema & Navegação

Informações do dispositivo, navegação, links externos e controle do app.

infoDispositivo()deviceInfo()

Retorna informações do aparelho (modelo, versão Android, etc).

↩ Promise<{ modelo, fabricante, versaoAndroid, ... }>
const info = await infoDispositivo();
infoBateria()batteryInfo()

Retorna o nível e status da bateria.

↩ Promise<{ nivel, carregando }>
const bat = await infoBateria();
infoRede()networkInfo()

Retorna o status da conexão de rede.

↩ Promise<{ conectado, tipo }>
const rede = await infoRede();
abrirNoApp(url)openInApp()

Navega para uma URL dentro do próprio WebView do APK.

urlsubstituir?
↩ void
abrirNoApp("/sobre.html"); abrirNoApp("#/pedido/123");
abrirForaDoApp(url)openOutsideApp()

Abre uma URL no navegador padrão do Android.

url
↩ void
abrirForaDoApp("https://google.com");
minimizarApp()minimizeApp()

Minimiza o app (vai para segundo plano).

↩ Promise<void>
await minimizarApp();
fecharApp()exitApp()

Encerra o app completamente. Use com cuidado!

↩ void
// Use somente após salvar estado! fecharApp();
definirPapelParede(imagem, opcoes?)setWallpaper()

Define um papel de parede (tela de início, bloqueio ou ambos).

imagemalvo?
↩ Promise<{ applied }>
await definirPapelParede("wallpaper.jpg", { alvo: "inicio" });
abrirWhatsapp(numero, mensagem)openWhatsapp()

Abre o WhatsApp com número e mensagem pré-preenchidos.

numeromensagem?
↩ Promise<void>
await abrirWhatsapp("5511999999999", "Oi, vim pelo app!");
discar(numero)dial()

Abre o discador do Android com o número preenchido.

numero
↩ Promise<void>
await discar("11999999999");
abrirMapa(endereco)openMap()

Abre o Google Maps com um endereço ou coordenadas.

endereco
↩ Promise<void>
await abrirMapa("Avenida Paulista, São Paulo");
verificarPacote(nome)checkPackage()

Verifica se um app está instalado. Busca inteligente por nome ou packageId.

nome
↩ Promise<{ exists, version, packageId, appName }>
const wpp = await verificarPacote("WhatsApp"); if (wpp.exists) console.log("v" + wpp.version);
abrirPacote(packageId)openPackage()

Abre outro app instalado no Android.

packageId
↩ Promise<{ success }>
const r = await abrirPacote("com.whatsapp"); if (!r.success) toast("App não encontrado");
apontarArquivo(nome, extensao, abrir?)locateFile()

Encontra e aponta para um arquivo na pasta Downloads. Busca inteligente por palavra-chave.

nomeextensaoabrir?
↩ Promise<{ path, found }>
const f = await apontarArquivo("relatorio", "pdf", false); if (f.found) console.log(f.path);
instalarPacote(path)installPackage()

Abre a tela de instalação nativa do Android para um APK. Use "select" para abrir o seletor.

path
↩ Promise<void>
await instalarPacote("select"); // Abre seletor // ou await instalarPacote(caminho.path); // Instala direto
statusPermissoes(array)permissionsStatus()

Consulta o status de múltiplas permissões sem solicitá-las.

permissoes[]
↩ Promise<Object>
const p = await statusPermissoes(["CAMERA", "RECORD_AUDIO"]); console.log(p);
aumentarVolume(stream, passos)volumeUp()

Aumenta o volume em N passos.

streampassos
↩ Promise<void>
await aumentarVolume("midia", 1);
diminuirVolume(stream, passos)volumeDown()

Diminui o volume em N passos.

streampassos
↩ Promise<void>
await diminuirVolume("midia", 1);
solicitarSegundoPlano()requestBackgroundExecution()

Pede permissão ao usuário (ou abre configurações) para que o app não seja fechado pelo Android enquanto estiver rodando em segundo plano.

↩ Promise<{ ok, abriuInicioAutomatico, abriuOtimizacaoBateria }>
const bg = await solicitarSegundoPlano(); if (bg.ok) { console.log("App configurado para rodar em segundo plano."); }
ativarSegundoPlano(opcoes?)startBackgroundWorker()

Ativa um Worker persistente (Background Service), mantendo o JavaScript rodando mesmo quando o app for minimizado ou a tela desligar. Cria uma notificação fixa.

titulo?texto?
↩ Promise<void>
await ativarSegundoPlano({ titulo: "Processando...", texto: "Não feche o aplicativo agora" });
desativarSegundoPlano()stopBackgroundWorker()

Encerra o Worker persistente e remove a notificação fixa do sistema.

↩ Promise<void>
await desativarSegundoPlano();

Compartilhamento

Receba arquivos, textos e links compartilhados de outros apps e compartilhe o próprio APK.

compartilharApp()shareApp() / share_me()

Compartilha o próprio APK do app com outros.

↩ Promise<{ ok }>
await compartilharApp();
obterCompartilhamentoInicial()getInitialShare()

Retorna os dados do compartilhamento que abriu o app (se houver).

↩ Promise<{ tipo, uri?, texto? }>
const share = await obterCompartilhamentoInicial(); if (share) console.log(share.tipo, share.uri);
aoReceberCompartilhamento(callback)onShareReceived()

Dispara quando o app recebe um compartilhamento de outro app enquanto já está aberto.

callback(dados)
↩ Function (cancelar)
aoReceberCompartilhamento((dados) => { console.log(dados.tipo, dados.uri || dados.texto); });