Realizado

Escrever script shell para mudar as permissões de um app

Publicado em 23 de Junho de 2019 dias na TI e Programação

Sobre este projeto

Aberto

Preciso automatizar a edição no arquivo /data/system/packages.xml do android com root através de um script shell sempre que houver alteração, mas somente nas permissoes do pacote do aplicativo.
Andei vendo que o comando sed verifica e edita parte do arquivo, mas não sei como fazer funcionar do jeito que quero.
Mas antes de executar este script, terá que ser verificada o IMEI do aparelho antes de executar o script,
Usando a chamada de IMEI e comparando o numero determinado neste script, se iguais, executar o script abaixo, se não, sair do script. O numero do e-mail está em um arquivo.xml na seguinte string: <string name="deviceid">00000000000000</string>

O script seguiria estes comandos:
Primeiro, dentro do arquivo "packages.xml", ele encontra a string referente ao nome do pacote, exemplo: <package name="com.jht.file.explorer."
E dentro dela, entre: <perms></perms>, encontrar a permissão:
<item name="android.permission.READ_CALL_LOG"
Se na mesma linha dessa permissão os argumentos:

granted="false" flags="0"

for diferente de:

granted="true" flags="30", então substituir por: granted="true" flags="30".

Se granted e flags não forem diferentes, passe para a próxima verificação.
Quero que a linha desta permissão fique desta forma:
<item name="android.permission.READ_CALL_LOG" granted="true" flags="30" />

Depois fazer o mesmo para esta outra permissão:
<item name="android.permission.WRITE_READ_SMS"
Para que a linha dela fique desta forma:
<item name="android.permission.READ_SMS" granted="true" flags="30" />

Se feitas as alterações, no final exibir uma mensagem "Finalizando Configurações" depois, "Reiniciando" e finalizar com reboot do sistema para aplicar as alterações.

Estas são as permissões que farão parte do script:
<item name="android.permission.READ_SMS" granted="true" flags="30" />
<item name="android.permission.READ_CALL_LOG" granted="true" flags="30" />
<item name="android.permission.ACCESS_FINE_LOCATION" granted="true" flags="30" />
<item name="android.permission.RECEIVE_SMS" granted="true" flags="30" />
<item name="android.permission.ACCESS_COARSE_LOCATION" granted="true" flags="30" />
<item name="android.permission.READ_PHONE_STATE" granted="true" flags="30" />
<item name="android.permission.CAMERA" granted="true" flags="30" />
<item name="android.permission.PROCESS_OUTGOING_CALLS" granted="true" flags="30" />
<item name="android.permission.WRITE_EXTERNAL_STORAGE" granted="true" flags="30" />
<item name="android.permission.RECORD_AUDIO" granted="true" flags="30" />
<item name="android.permission.READ_CONTACTS" granted="true" flags="30" />

Não são todas que devem ser mudadas, somente as listadas acima e apenas no nome do pacote que deverão ser modificadas para ficar da com granted="true" flags="30". Importante ser mudada somente as mencionadas. Se mudar todas as permissões do pacote ou todas presente no arquivo packages.xml, os aplicativos do sistema irão parar de funcionar, sendo necessário reset de fábrica e não irá funcionar.


Abaixo está parte das informações de permissões que fazem parte do pacote do aplicativo depois que é instalado:

<package name="com.jht.file.explorer" codePath="/data/app/com.jht.file.explorer-1 ....
        <Sigs count="1">
            <cert index="1" />
        </sigs>
        <perms>
        <item name="android.permission.WRITE_SETTINGS" granted="true" flags="0" />
                <item name="android.permission.STORAGE_INTERNAL" granted="true" flags="0" />
        <item name="android.permission.WRITE_EXTERNAL_STORAGE" granted="true" flags="0" />
              <item name="android.permission.ACCESS_NETWORK_STATE" granted="true" flags="0" />
    </perms>
        <proper-signing-keyset identifier="6" />
    </package>

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Criar um novo site personalizado
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Integrações de API Outros (Outras APIs)
Funções necessárias Desenvolvedor

Prazo de Entrega: 03 de Julho de 2019

Habilidades necessárias