Nota :
Solução a seguir:
- foi testado no Android 4.2.1, COS12 (Android 5.0.2) e CM12.1 (Android 5.1.1) - todos eles executando o Play Store v6.0.5 1
- requer um Android enraizado
- aqui está uma breve demonstração da solução
Ao navegar no manifesto da Play Store, adivinhei que apenas o serviço a seguir provavelmente é o iniciador da atualização automática de aplicativos por Wi-Fi.
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
Joguei com esse serviço sob poucas condições em dispositivos diferentes e achei útil para o objetivo em questão. Escusado será dizer que a configuração de atualização automática de aplicativos deve ser definida como "Atualizar automaticamente aplicativos apenas por Wi-Fi" na Play Store.
Aqui está o que você pode fazer: Instale um aplicativo de automação que possa executar uma série de ações quando a fonte de energia e o Wi-Fi estiverem conectados e, posteriormente, desconectados. Eu usei o Tasker ( versão de teste ; guia do usuário ) como o aplicativo de automação.
Estaríamos precisando de duas tarefas: uma tarefa de entrada e uma tarefa de saída. Veja minha resposta aqui para obter ajuda relacionada.
Digite a tarefa : (Ações):
Código → Executar Shell
- Opcionalmente, você pode adicionar uma ou mais ações para notificar a si mesmo que o procedimento de atualização foi iniciado. Usei Alerta → Flash para me notificar através de um brinde.
Tarefa de saída : (Ações):
Esta tarefa requer os applets do Busybox instalados. Consulte Como instalar ferramentas de linha de comando ausentes em um dispositivo Android? para obter ajuda relacionada.
Rede → Rede de teste
- Tipo: Dados móveis ativados
- Armazenar o resultado em:
%Mdata
Código → Executar Shell
- Novamente, para notificar a si mesmo, use qualquer ação de sua escolha.
O que essas tarefas fazem?
Quando as condições para os dois contextos são atendidas, a tarefa enter é executada. Os comandos nessa tarefa fazem essas coisas em ordem seqüencial:
- ativar o serviço da Play Store acima mencionado
- Play Store forçada
- iniciar o serviço da referida Play Store
E isso é tudo para que a atualização automática comece.
Depois de permanecer ativado, sempre que o perfil for desativado (simplesmente porque uma condição para um contexto não atende mais), a tarefa de saída será executada. Essa tarefa de saída executa as seguintes etapas em ordem seqüencial:
- armazena o estado (ativado / desativado) dos dados móveis em uma variável Mdata
o trabalho desses comandos é:
- desativar dados móveis
- desativar o Wi-Fi
- Play Store forçada
- Gerenciador de downloads forçado
Notei que, se uma atualização (download em andamento) para um aplicativo for interrompido devido a indisponibilidade de Wi-Fi, a barra de progresso (notificação) é rejeitado, o status do progresso fica armazenado em uma linha na tabela de downloads do banco de dados de downloads .db . (Esse banco de dados está localizado no diretório de dados do Download Manager.) Essa linha também contém o local do arquivo parcialmente baixado.
Para garantir que a atualização automática não ocorra na próxima conexão bem-sucedida ao Wi-Fi e garantir que isso nunca ocorra quando o perfil não estiver executando a tarefa enter, a seguir, é o que o restante dos comandos faz:
- extraia o local do arquivo parcialmente baixado do valor na coluna
_data
correspondente a uma linha identificada por com.android.vending como pacote de notificação. Nosso objetivo é excluir esse arquivo. Este é um pequeno sacrifício a fazer.
- se realmente houver um caminho de arquivo em _data , use-o para excluir o arquivo apontado por ele.
- exclua essa linha; caso contrário, ela será lida pelo Gerenciador de downloads quando a conectividade da rede for alterada (reconectada a um Wi-Fi) e a atualização automática recomeçar.
- desativar o serviço da Play Store acima mencionado, para que a atualização automática nunca comece por si própria
- ativar o Wi-Fi
- ative os dados móveis, se estiverem ativados antes da execução desta tarefa.
1 No momento da criação da primeira revisão desta resposta, a versão atual da Play Store definitivamente não é 6.0.5, mas acima. No entanto, nenhum dos meus dispositivos recebeu mais nenhuma atualização da Play Store até o momento.