Falamos neste post anterior sobre a possibilidade de se expandir os recursos disponíveis no Magic xpa 2.2a, através de acesso direto à API das plataformas dos dispositivos móveis. Agora, vamos mostrar um exemplo prático. Este exemplo será relacionado à API do Android®.
É um exemplo simples, e o objetivo é podermos consultar as características (tamanho e espaço livre) do cartão SD do dispositivo (smartphone ou tablet).
Como mostrado no post anterior, teremos de alterar o arquivo de programa TestApplication.java, adicionar nossa customização através de código Java, e em seguida gerar um novo RIA Client Mobile para Android.
No arquivo de programa (TestApplication.java) temos de adicionar dois imports:
import android.os.Environment; // Para a classe “Environment”
import android.os.StatFs; // Para a classe “StatFs”
Na função “userDefinedFunction”, adicionamos o seguinte código:
String result = “”;
try {
// Verifica o tamanho e espaco disponivel no “SD Card”
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks();
long bytesTotal = (long)stat.getBlockSize() * (long)stat.getBlockCount();
result = String.valueOf( bytesTotal ) + “/” + String.valueOf( bytesAvailable );
} catch (Exception e) {
result = e.getMessage();
}
return result;
O retorno deste código será uma string com dois valores separados por “/”, sendo o da esquerda o tamanho total, e o da direito o espaço atualmente livre. Em caso de alguma exceção, retorno o descritivo desta exceção. Observe que é importante proteger o código dentro de um bloco try…catch, para que qualquer exceção ocorrida não chegue até o client Magic xpa.
O código final fica mais ou menos assim:
Em seguida, após compilar um novo RIA Client Mobile para Android, procedemos a instalação do mesmo:
e abrimos a aplicação:
Ao clicar no botão “Verificar”, será executada a função ClientOSEnvGet (‘device_udf|.‘), que por sua vez acionará o nosso código customizado ( o argumento “.” não será utilizado neste exemplo ), retornando as informações do cartão SD:
Neste endereço você poderá baixar esta aplicação demo, bem como o client customizado já compilado. Esta demo foi gerada com o Magic xpa 2.2a.
Bom dia, tentei fazer esse procedimendo e ao clicar em verificar, no android, deu erro: return string
Como é um post antigo, e você provavelmente está com versões mais novas do Magic xpa, tente usando a função nativa ClientNativeCodeExecute() => http://magic.force.com/PublicKnowledge/articles/bl_Reference/ClientNativeCodeExecute-xpa-4x/