Android

Android Studio: /dev/kvm device permission denied

O Erro “/dev/kvm device permission denied” é muito comum para os usuários de Linux ao tentar iniciar um emulador. Segue a solução: Verifique existe o grupo kvm : grep kvm /etc/group Deve retornar algo como: kvm:x:some_number Caso não exista faça a instalação do qemu-kvm: sudo apt install qemu-kvm Adicione seu usuário no grupo kvm sudo […]

Android Tests – Como pegar o valor de um LiveData (How to get the value from a LiveData)

Solução de como obter o valor de um LiveData em seus testes Caso se depare com o problema Cannot invoke observeForever on a background thread veja esse post: https://helpdev.com.br/2019/11/06/android-tests-cannot-invoke-observeforever-on-a-background-thread/ Referência: https://github.com/android/sunflower/blob/master/app/src/androidTest/java/com/google/samples/apps/sunflower/utilities/LiveDataTestUtil.kt

Android Tests – Cannot invoke observeForever on a background thread

Ao realizar um teste utilizando coroutine me deparei com esse problema ao tentar observar um LiveData Cannot invoke observeForever on a background thread Para contextualizar o problema, eu estava utilizando um dao do Room com uma suspend function para me retornar um LiveData, exemplo: O problema é a execução do observer fora da thread da […]

Gson – Criando um Adapter para conversão de data ISO em Date (ISO formatted date from JSON String using Gson)

O código abaixo representa uma configuração do Gson para realizar a conversão de um Json com campos de data em formato ISO para o objeto Date

Android – Como combinar dois ou mais LiveData ( Transformations.map with multiple arguments )

Nesse post vou mostrar como realizar a combinação de LiveData para gerar outro. No meu caso utilizei dessa combinação para deixar a exibição de um botão de Login dinâmico em relação ao preenchimento das colunas de usuário e senha. Com a utilização do Transformations.map podemos criar um novo LiveData que muda de valor conforme o […]

Android – Como remover o fragment da pilha ao navegar (How to clear navigation Stack after navigating to another fragment)

Nesse post vou mostrar como remover da pilha o fragment anterior utilizando a nova arquitetura de navegação do android ( Navigation Architecture Component ) Dado a seguinte navegação A -> B -> C ao adicionarmos o código a seguir a action de navegação do B para o C a stack de volta ficaria assim: C -> A […]

Android – Adicionando onBackPressed com dois clicks no Fragment (Clicking the back button twice to exit)

Quando estamos em um fragment não temos acesso ao override do onBackPressed, nesse caso temos que acessar a FragmentActivity e adicionar um Callback no onBackPressedDispatcher, dessa maneira começamos a interceptar o click. Na solução abaixo criamos um callback que permite a ação voltar diretamente do Fragment após ele ter realizado o click em um intervalo […]

OkHttp – Como gerar um RequestBody por um InputStream (RequestBody supports InputStream)

Segue um código de como gerar um RequestBody do OkHttp atravéz de um InputStream, essa abordagem é muito utilizada para realizar envios de arquivos com o MultipartBody.Builder. A baixo vou inserir um gist com duas classes, uma para criar baseado em um InputStream e outra em uma Uri (utilizado no Android) Provavelmente alguma implementação parecida […]

Android – Compartilhar código entre teste unit e instrumental ( Sharing code between unit tests and instrumentation tests on Android )

Suponhamos que você tenha uma aplicação android com uma serie de testes. Alguns deles são testes unitários (unit tests), localizados em: src/test, e testes instrumentais (intrumentation tests), localizados em: src/androidTest. O problema encontrado é que muitas vezes temos códigos que poderiam ser compartilhados entre esses testes, mas não temos como fazer isso pois estão em […]

Rolar para o topo