Não foi possível mover alguns aplicativos para o cartão SD

9

Tenho aplicativos como o Any.DO e o AK Notepad instalados no celular My Samsung Galaxy Y Android 2.3.6. Eu tentei o Titanium Backup e o App 2 SD (mover o aplicativo para o SD), mas ainda não consigo mover esses aplicativos para o cartão SD. O que está errado? Alguém pode me ajudar aqui?

Izzy
fonte
11
O que acontece se você tentar mover os aplicativos para o SD?
Flow
11
@Flow veja minha resposta. Ambos os aplicativos têm widgets integrados, portanto, provavelmente, não suportam o App2SD.
Izzy
Se você deseja mover o aplicativo para o cartão SD por causa de "baixo armazenamento interno" ir verificar android.stackexchange.com/questions/30620/...
Sylvain Huard

Respostas:

7

Um aplicativo deve oferecer suporte explícito ao App2SD ou você não pode movê-lo para o cartão. Há vários motivos pelos quais um aplicativo pode não suportá-lo:

  • usando widgets (os dois aplicativos mencionados parecem pertencer a esta categoria. AK Notepad: "Anote notas na tela inicial"; Any.DO: "Você pode até adicionar nosso widget à tela inicial")
  • executando um serviço

Como o sdcard seria inacessível ao conectar-se a um computador, ambas as coisas "travariam" (já que não podiam mais acessar seus dados etc.). É claro que sempre há a possibilidade de o desenvolvedor simplesmente não se importar - nesse caso, você deve entrar em contato com ele e perguntar.

Izzy
fonte
Encontrei um caso interessante - um aplicativo, f-droid.org/repository/browse/?fdid=com.nanoconverter.zlab que possui um defeito - oferece serviço e widget em segundo plano, mas meu 4.2.2 pode movê- lo para Cartão SD (perdendo essa funcionalidade, ofc).
Consultoria gratuita
3

Existem alguns fatores que podem afetar isso:

  1. Um aplicativo deve declarar explicitamente que é preferível / possível ser instalado no cartão SD.

    A partir do nível 8 da API, você pode permitir que seu aplicativo seja instalado no armazenamento externo (por exemplo, o cartão SD do dispositivo). Esse é um recurso opcional que você pode declarar para o seu aplicativo com o android:installLocationatributo manifest. Se você não declarar esse atributo, seu aplicativo será instalado apenas no armazenamento interno e não poderá ser movido para o armazenamento externo .

    (Ênfase minha)

  2. Um aplicativo está configurado para compilar usando a API 7 (Froyo) ou inferior, que não oferece suporte à instalação de um aplicativo no cartão SD (mesmo que esteja instalado no GingerBread ou em dispositivos mais recentes)

    A capacidade do aplicativo para instalar no armazenamento externo é um recurso disponível apenas em dispositivos que executam a API Nível 8 (Android 2.2) ou superior. Os aplicativos existentes que foram criados antes do Nível 8 da API sempre serão instalados no armazenamento interno e não podem ser movidos para o armazenamento externo (mesmo em dispositivos com Nível 8 da API) . No entanto, se o seu aplicativo for projetado para oferecer suporte a um nível de API menor que 8, você poderá optar por oferecer suporte a esse recurso para dispositivos com nível de API 8 ou superior e ainda ser compatível com dispositivos usando um nível de API menor que 8.

    (Ênfase minha)

Os motivos pelos quais alguns aplicativos não são preferíveis para instalação no cartão SD são os seguintes:

Quando o usuário permite que o armazenamento em massa USB compartilhe arquivos com o computador (ou desmonta ou remove o armazenamento externo), qualquer aplicativo instalado no armazenamento externo e em execução no momento é eliminado. O sistema efetivamente desconhece o aplicativo até o armazenamento em massa ser desativado e o armazenamento externo ser remontado no dispositivo. Além de matar o aplicativo e torná-lo indisponível para o usuário, isso pode interromper alguns tipos de aplicativos de uma maneira mais séria. Para que seu aplicativo se comporte de maneira consistente conforme o esperado, você não deve permitir que ele seja instalado no armazenamento externo se ele usar algum dos seguintes recursos, devido às consequências citadas quando o armazenamento externo for desmontado:

  • Serviços

    Sua execução Serviceserá interrompida e não será reiniciada quando o armazenamento externo for remontado. [...]

  • Serviços de Alarme

    Seus alarmes registrados AlarmManagerserão cancelados. [...]

  • Mecanismos do método de entrada

    Seu IME será substituído pelo IME padrão. [...]

  • Papel de parede animados

    O seu Live Wallpaper em execução será substituído pelo Live Wallpaper padrão. [...]

  • Widgets de aplicativos

    O seu App Widget será removido da tela inicial. Quando o armazenamento externo é remontado, o App Widget não estará disponível para o usuário selecionar até que o sistema redefina o aplicativo doméstico (geralmente não até a reinicialização do sistema).

  • Gerentes de conta

    Suas contas criadas com AccountManagerdesaparecerão até que o armazenamento externo seja remontado.

  • Adaptadores de sincronização

    Você AbstractThreadedSyncAdaptere toda a sua funcionalidade de sincronização não funcionarão até que o armazenamento externo seja remontado.

  • Administradores de dispositivos

    Seu DeviceAdminReceivere todos os seus recursos administrativos serão desativados, o que pode ter consequências imprevisíveis para a funcionalidade do dispositivo, que podem persistir após a remontagem do armazenamento externo.

  • Receptores de transmissão ouvindo "inicialização concluída"

    O sistema entrega a ACTION_BOOT_COMPLETEDtransmissão antes que o armazenamento externo seja montado no dispositivo. Se o seu aplicativo estiver instalado no armazenamento externo, ele nunca poderá receber essa transmissão.

Se o seu aplicativo usa algum dos recursos listados acima, você não deve permitir a instalação no armazenamento externo.

(Algumas partes são editadas. Eles estão explicando o que os desenvolvedores precisam fazer para que seus aplicativos funcionem corretamente após a remontagem do cartão SD.)

Nota : esta resposta serve como informação geral para "Por que alguns aplicativos não podem ser movidos para o cartão SD"

Fonte: Desenvolvedores Android: Local de instalação do aplicativo .

Andrew T.
fonte
1

É definitivamente possível mover aplicativos para o cartão SD e ainda tê-los funcionando perfeitamente (widgets e serviços incluídos) via Link2SD.

EDIT: O uso desse método requer acesso root no telefone e também precisa que seu cartão SD seja formatado para ter uma segunda partição.

Para evitar a redundância de postar a resposta novamente por aqui, vou colocar um link para ela: https://android.stackexchange.com/a/145591/167026

Divulgado
fonte