Geralmente quando o equipamento não tem memória interna, o Environment responde o path do cartão de memória.
Eu já vi uma aplicação que guardava diversos paths do SDcard(mnt/external_sd ; mnt/sdcard/external_sd e mais algumas outras) para verificar se o cartão estava montado.
Os problemas disso são:
Aplicação engessada e, caso o external_sd seja montado dentro do sdcard, você pode escrever nele normalmente mesmo sem o cartão inserido.
Você pode usar o que o Pedro falou também.
Mas, se o arquivo é pequeno, aconselho usar o retorno do Enviroment, porque fica extremamente dinâmico.
Att.
--
Carlos Eduardo Simões Pelegrin
Em 29 de novembro de 2013 15:42, Claudio <listas.arquivo@gmail.com> escreveu:
@Pedro acho é isso que terei que fazer.
@Carlos, se eu gravar direto no endereço do retorno do Enviroment, vou gravar na memoria interna o que eu não queria.
A principio vou usar assim, mas vou ter achar uma maneira daqui um tempo.Para entender, minha aplicação é a seguinte, tenho um equipamento eletrônico( que eu projetei, sou eng.) que armazena vários dados durante sua utilização. Então o usuário vai com um chaveirinho tipo pendrive, e recolhe esses dados, leva ao PC e gera um gráfico para analise em aplicativo que fiz em Delphi. Isso já trabalha assim há uns 6 anos.Com as novas tecnologias, ao invés de usar PC, tenho cliente que quer usar tablet, então estou fazendo o app. que gera o gravo a partir do mesmo arquivo armazenado no equipamento, com o diferencial que agora vou por leitura por bluetooth, assim fica mais fácil descarregar.
Para isso, está OK, gravo um arquivo, na memoria interna mesmo, e posso destruí-lo depois, porem para uma segunda etapa, quero que o aplicativo leia graficos salvos, e estes serão salvo no memory card. Então já estou pensando nos problemas ali da frente :)Cláudio
Em 29 de novembro de 2013 11:13, Carlos Eduardo <carloseduardopelegrin@gmail.com> escreveu:
ou então, porque não gravar no retorno do Environment?Você insere esse arquivo manualmente ou gera ele no código?
--
Carlos Eduardo Simões PelegrinEm 29 de novembro de 2013 11:11, Pedro Subutzki <Pepeu> <falecompepeu@gmail.com> escreveu:
Você não consegue verificar nas 2?Tenta no sdcard0, se não achar tenta no sdcard1. :)
Abraços,
Pedro Subutzki
__________________________________________
HADI - Makes SQLite in Android easy and simple
https://github.com/PepeuCps/HadiEm 28 de novembro de 2013 19:48, Claudio <listas.arquivo@gmail.com> escreveu:Percebi que ele tem sdcard0 e sdcard1, quando leio para achar a memoria externa ele retorna sdcard0, porem essa é a memoria interna. Depois de apanhar um certo tempo coloquei o arquivo a ser lido ai, leu normal, então o problema é identificar a memoria externa real.
Tentei os métodos sugeridos aqui: http://stackoverflow.com/questions/5694933/find-an-external-sd-card-location , mas o retorno também foi sdcard0 para memória externa :/
Sigo na luta, mas acho que vou acabr tendo que fazer alguma gambiarra ou mudar a linha de raciocínio...Cláudio
Em 28 de novembro de 2013 13:00, Carlos Eduardo <carloseduardopelegrin@gmail.com> escreveu:
Exatamente.Da forma que você quer eu não consegui fazer, ainda mais que cada device monta o cartão em local diferente.Att.
--
Carlos Eduardo Simões PelegrinEm 28 de novembro de 2013 12:22, Claudio <listas.arquivo@gmail.com> escreveu:Pra mim entender, quando conectar ele vai pegar essa ação e guardar o path do sd ?Assim não vai funcionar, pois com certeza ele não irá fazer isso.
O que preciso é pegar o path na hora que está rodando o aplicativo...
De qualquer forma obrigado.Em 28 de novembro de 2013 12:12, Carlos Pelegrin <carloseduardopelegrin@gmail.com> escreveu:
Só ressalto que esse código funciona apenas se o aplicativo estiver funcionando quando o usuário conectar o cartão.--no onCreate:
ifilter = new IntentFilter();ifilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
ifilter.addDataScheme("file");//Se retirar essa linha, não funciona.mReceiver = new sdCardReceiver();registerReceiver(mReceiver, ifilter);no Receiver:
private class sdCardReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {Message msg = new Message();msg.obj = intent.getData();if(msg.obj!=null){handler.sendMessage(msg);}
}}}
No Handler:
private class sdCardHandler extends Handler{@SuppressLint({ "SdCardPath", "NewApi" })@Overridepublic void handleMessage(Message msg) {String path;Uri uri = (Uri) msg.obj;path = uri.getPath();}
}Espero que te ajude.Att.Carlos
Em quinta-feira, 28 de novembro de 2013 11h41min29s UTC-2, Claudio . escreveu:Bom dia.
Estou tentando ler um arquivo.txt que está no SD card, estou usando:
File arquivo = new File(Environment.getExternalStorageDirectory(),arquivo.txt);para achar o arquivo dentro do sdcard.No emulador funciona, está tudo OK, porem quando tento fazer isso no celular, com android 4.1.2 trava na hora de ler, como se não achasse o arquivo.
No emulador funciona tanto para versões 2.2 quanto 4.1.2.
Coloquei um toast para ver se está achando o sd, e está ok, tb...Debugando em real time, trava na hora de ler o arquivo, ou acha-lo, mas está achando o sd montado, pois testo antes.
Alguém tem uma dica ?obrigado.Cláudio.You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
0 comentários:
Postar um comentário