Como permitir a atualização automática de aplicativos na Play Store apenas quando conectado?

14

Gostaria que os aplicativos fossem atualizados automaticamente quando meu telefone estiver conectado (carregando) e com wifi. Posso permitir facilmente a atualização automática apenas quando o wifi estiver ativado com a opção apropriada nas configurações da Play Store, mas não impedir que ocorram atualizações automáticas se o telefone estiver funcionando com bateria.

Isso está causando um consumo desnecessário de bateria quando estou usando meu telefone com wifi em casa. Como os aplicativos de atualização automática são mais um trabalho de daemon do que uma tarefa de tempo crítico, não acredito que não seja uma estratégia padrão de economia de energia.

Você conhece algum aplicativo ou solução alternativa do sistema (incluindo se o dispositivo está enraizado) para conseguir isso?

Erwin Mayer
fonte

Respostas:

4

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 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.

  • Perfil: configure dois contextos. Consulte Como criar um perfil com múltiplos contextos no Tasker? para qualquer ajuda relacionada

    • Estado → Potência → Fonte: escolha
    • Estado → Rede → Wifi conectado → preencha os detalhes de acordo com suas necessidades ou deixe todos ou alguns deles intocados

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):

    1. Código → Executar Shell

      • Comando:

        pm ativar com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        sou force-stop com.android.vending;
        estou com serviço de inicialização com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • tick Use Root
    2. 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.

    1. Rede → Rede de teste

      • Tipo: Dados móveis ativados
      • Armazenar o resultado em: %Mdata
    2. Código → Executar Shell

      • Comando:

        desativação de dados svc;
        desabilitar svc wifi;
        sou force-stop com.android.vending;
        sou force-stop com.android.providers.downloads;
        down_path = $ (consulta de conteúdo --uri content: // downloads / my_downloads --projection _data --where "notificationpackage = 'com.android.vending'");
        [["$ down_path"! = "Nenhum resultado encontrado." ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || eco continue;
        exclusão de conteúdo --uri content: // downloads / my_downloads --where "notificationpackage = 'com.android.vending'"
        pm desativar com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi enable;
        [["% Mdata" == "yes"]] && svc data enable || eco sem fazer nada;
        
      • tick Use Root
    3. 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 _datacorrespondente 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.

Senhor do Fogo
fonte
O script não estava funcionando para mim; assim, como uma pequena etapa de solução de problemas, executei o comando "content query" manualmente e notei que ele realmente resulta na string "Nenhum resultado encontrado", de modo que a próxima linha "content delete" não faz nada desde a condição SE não é verdadeira.
Prl77 31/05
2

O mais próximo que eu cheguei é combinar duas configurações. Eu faço isso em dois dispositivos, um com Android 4.4.4 (KitKat) e outro com Android 5.0.2 (Lollipop).

  • Configurações do sistema → Wi-Fi → Avançado → Manter o Wi-Fi ativado durante o sono → Somente quando conectado
  • Play Store → Configurações → Atualizar aplicativos automaticamente → Atualizar aplicativos apenas por Wi-Fi

Parece receber atualizações pelo menos um pouco mais frequentemente quando está conectado. Não é perfeito, mas não é uma meia solução ruim, e não requer Tasker ou root.

Benjamin Oakes
fonte
0

Isso pode ser conseguido usando o Tasker (aplicativo pago). No Tasker, o perfil pode ser definido com as seguintes condições. Tem pouca curva de aprendizado, mas esse aplicativo pode substituir quase muitos aplicativos.

Abaixo está o perfil de amostra,

Quando Bateria> X% E Wifi está LIGADO e o Carregamento está ativado

Ativar sincronização automática ativada

Esta é apenas a amostra, você pode especificar a condição com base em seus requisitos. Como este é um tópico separado, eu o incentivaria a usar o google tasker em fóruns xda.

Cyborgz
fonte
3
Isso não ativaria / desativaria todas as sincronizações automáticas de todos os dados? Ter que atualizar manualmente todos os outros serviços para que a Play Store não atualize automaticamente parece menos do que o ideal.
Buster