none
Dúvidas Windows Phone RRS feed

  • Pergunta

  • Olá pessoal!

    Não achei o lugar exato para postar essa dúvida, então, coloco-a aqui...

    É o seguinte, estou precisando fazer uma aplicação para Windows Phone, qual preciso ler e lecrever um arquivo de texto, mas não tenho a mínima ideia de como se faz isso nessa plataforma, imagino que consiga pelo namespace System.IO; mas  e em relação ao diretório, como ficaria a sintaxe para eu indicar onde está esse arquivo? Precisaria indicar o caminho de um cartão de memória? Como seria? E em relação à conexão com base de dados, há uma forma de se conectar ou criar um pequeno banco em algum espaço da memória e depois fazer uma exportação ou até importação de dados?

    Acho que podem perceber que esou sem noção nenhuma, mesmo...

    Se puderem ajudar, toda ajuda é bem vinda, tutoriais, dicas... Tudo...

    Agradeço a todos desde já...

    Até mais, abraços...

    • Movido Olavo Oliveira Neto quinta-feira, 8 de setembro de 2011 19:57 Estou movendo sua questão para o fórum de Mobilidade, local mais adequado para perguntas sobre Windows Phone (De:.NET Development - Geral)
    quinta-feira, 8 de setembro de 2011 19:42

Respostas

  • Ora viva,

    A primeira coisa a compreender é mesmo o funcionamento do Windows Phone quando a acesso a ficheiros: cada aplicação que é instalada tem o seu espaço privado e que não é nem pode ser partilhado com outra aplicação!

    Quer isto dizer que só poderás aceder a ficheiros que a tua própria aplicação crie no seu espaço privado; este espaço privado chama-se Isolated Storage.

    Podes ler mais sobre este assunto aqui:

    http://msdn.microsoft.com/en-us/library/ff402541(v=vs.92).aspx

    Podes encontrar algumas demos de como aceder ao Isolated Storage de uma aplicação aqui:

    http://msdn.microsoft.com/en-us/library/ff431744(v=vs.92).aspx

    Tem aí várias, mas as que te interessam para este caso serão principalmente a "Model-View-ViewModel Sample" e "Translator Starter Kit"!

    Espero ter ajudado! ;)


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    sexta-feira, 16 de setembro de 2011 16:07
  • Para enviar e-mails tens nativamente a classe EmailComposeTask, mas infelizmente esta classe não permite anexar ficheiros, pelo que dado o requisito que expões no teu post, creio que não servirá para o que pretendes!

    Neste caso concreto penso que a única hipótese será utilizares algum tipo de WebService para enviares os dados e então os tratares!


    Pedro Lamas
    • Sugerido como Resposta Pedro LamasMVP sábado, 17 de setembro de 2011 11:22
    • Não Sugerido como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 11:00
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    sábado, 17 de setembro de 2011 11:21
  • Ora viva Jefferson,

    É possível aceder por USB sim, mas isso requer que se trate de um dispositivo "Developer Unlocked", logo não creio ser a melhor solução...

    E então wifi, é opção? Assim podias simplesmente dizer ao cliente que se ligava a uma rede Wireless (podia mesmo ser uma ligação ad-hoc num portátil) e então enviavas os dados através de um webservice local.

    A vantagem é que para além de não serem precisos cabos, dado que é uma ligação wireless, fica totalmente de borla (sem necessidade de plano de dados)...


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    segunda-feira, 19 de setembro de 2011 11:20
  • Ok, eu explico melhor então! :)

    Neste momento, existem duas formas de instalar aplicações num qualquer dispositivo Windows Phone:

    • Através do Marketplace (e como tal, tem de ser uma aplicação publicada e aprovada)
    • Usando a aplicação "Application Deployment" que vem com o SDK (só possível em dispositivos "developer unlocked")

    Para poderes fazer Debug da tua aplicação no teu telefone físico tens que te registar no App Hub (pagando um valor de 99 USDolares anualmente), de forma a que te seja permitido desbloquear até 3 dispositivos para esse efeito; sem a conta (paga) do App Hub, não poderás testar as aplicações para além do emulador de Windows Phone que vem com o SDK...

    Nas aplicações instaladas via "Application Deplyment" é de facto possível aceder ao IsolatedStorage da aplicação por USB, usando o Isolated Storage Explorer; tens aqui um artigo da Microsoft a explicar como utilizar esta ferramenta.

    Pelo que pude perceber, o cenário que expões é deste tipo:

    • abrir a aplicação
    • receber um ficheiro
    • alterar os dados através da interface da aplicação
    • reenviar o ficheiro
    • fim!

    USB não me parece viável num Windows Phone que não esteja "developer unlocked", dado que neste momento não existe API de comunicação via USB no SDK; daí que para receber e enviar ficheiros (ou dados, que afinal é isso que um ficheiro é mesmo!) penso que a solução passa mesmo por WebServices!

    Nota que quando falo em "WebService" se não quiseres, não precisas de andar a inventar a roda, podes por exemplo recorrer a um componente de comunicação com DropBox para fazer o mesmo (tens aqui uma série deles em Open Source), tendo aqui a camada de serviço completamente implementada (só precisas mesmo de buscar o ficheiro, alterar, e guardar novamente); claro que neste caso vais precisar de ter ligação de dados...


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    segunda-feira, 19 de setembro de 2011 14:54
  • O Marketplace funciona em 3 modos:

    • Public, em que todas as aplicações publicadas são visíveis e pesquisáveis por todos os utilizadores e como tal, podem ser instaladas em qualquer Windows Phone; as aplicações antes de ficarem visíveis, são testadas a aprovadas pela Microsoft
    • Beta, em que podes publicar uma versão beta da tua aplicação, sendo que esta não é testada pela Microsoft e não está visível no Marketplace; esta apenas pode ser acedida por um endereço (url) que terás de enviar para quem quiseres que a teste (sendo que terás de autorizar antes essa pessoa, adicionando o LiveID dela no Marketplace); estas aplicações não podem ser actualizadas e são apagadas 90 dias após a publicação inicial
    • Private, em que as aplicações passam pelos mesmos testes que passariam se fossem públicas, mas apenas são acessíveis via url; podem ser actualizadas quantas vezes quiseres

    Agora há aqui um pequeno problema: o modo Public e Beta já estão disponíveis neste momento, mas o Private que penso que é o que se adequaria ao teu cenário, ainda não está... mas acredito que estará para breve (possivelmente com o lançamento da actualização "Mango" :) )

    Infelizmente não poderás aceder a qualquer tipo de storage (cartão de memória ou afins) de uma aplicação Windows Phone (o SDK não te dá esse acesso, só mesmo ao Isolated Storage da própria aplicação)


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    segunda-feira, 19 de setembro de 2011 16:15

Todas as Respostas

  • Ora viva,

    A primeira coisa a compreender é mesmo o funcionamento do Windows Phone quando a acesso a ficheiros: cada aplicação que é instalada tem o seu espaço privado e que não é nem pode ser partilhado com outra aplicação!

    Quer isto dizer que só poderás aceder a ficheiros que a tua própria aplicação crie no seu espaço privado; este espaço privado chama-se Isolated Storage.

    Podes ler mais sobre este assunto aqui:

    http://msdn.microsoft.com/en-us/library/ff402541(v=vs.92).aspx

    Podes encontrar algumas demos de como aceder ao Isolated Storage de uma aplicação aqui:

    http://msdn.microsoft.com/en-us/library/ff431744(v=vs.92).aspx

    Tem aí várias, mas as que te interessam para este caso serão principalmente a "Model-View-ViewModel Sample" e "Translator Starter Kit"!

    Espero ter ajudado! ;)


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    sexta-feira, 16 de setembro de 2011 16:07
  • Olá Pedro!

    Ontem encontrei o seguinte artigo: http://dotnet.dzone.com/articles/working-files-windows-phone-7 , que fala exatamente sobre o IsolatedStorageFile e o IsolatedStorageFileStream... Já entendí como funciona cada uma dessas Classes, quais são suas funções, seus Métodos principais e como e quando utilizá-las, fiquei estudando um tempinho, e já sei implementá-las...

    Mas então por que não marquei como resposta?

    O que preciso é o seguinte: Através de uma aplicação, nesse caso para a plataforma do Windows Phone 7, preciso ler e salvar um arquivo de texto, mas que não será lido apenas nessa aplicação, tenho que poder gerar esse arquivo de uma forma que posteriormente viesse a resgatá-lo via USB, enviar por e-mail ou outra forma semelhante, e assim utilizá-lo para meus fins... Não será um arquivo grande, mas é uma coisa para faciliar um processo que preciso realizar... Otimizações para usuários, entende?

    Se souber uma forma de se conseguir isso, e puder me indicar uma forma de também o conseguir, ficarei muito grato, pois não estou encontrando muita coisa com as minhas pesquisas...

    Obrigado pela força e pelas dicas...

    Um grande abraço, cara... Até mais...

    sexta-feira, 16 de setembro de 2011 16:53
  • Para enviar e-mails tens nativamente a classe EmailComposeTask, mas infelizmente esta classe não permite anexar ficheiros, pelo que dado o requisito que expões no teu post, creio que não servirá para o que pretendes!

    Neste caso concreto penso que a única hipótese será utilizares algum tipo de WebService para enviares os dados e então os tratares!


    Pedro Lamas
    • Sugerido como Resposta Pedro LamasMVP sábado, 17 de setembro de 2011 11:22
    • Não Sugerido como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 11:00
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    sábado, 17 de setembro de 2011 11:21
  • Olá Pedro!

    Obrigado pela atenção...

    Mas cara, minha necessidade específica não é a de enviar por e-mail... Enviar dessa forma é apenas uma das ideias cogitadas....

    O que preciso inicialmente é uma forma de conseguir resgatá-lo, se possível, via USB mesmo...

    Poderia me dizer se eu consigo acessar meu arquivo no IsolatedStorage, via USB?

    Enviar por e-mail seria como um plano B, pois não quero que o cliente esteja preso à operadora, não quero que ele dependa de conexão, isso são preocupações que poderia dar ao cliente como uma segunda alternativa, mas somente se ele quiser... Quero inicialmente que ele dependa só e simplesmente da minha aplicação, sem infulências exteriores que poderiam causar grandes impactos ou até mesmo um desconforto...

    Saberia me dizer então se é possível o que pretendo?

    Obrigado mais uma vez, e valeu pela força, cara...

    Até mais...

    segunda-feira, 19 de setembro de 2011 11:12
  • Ora viva Jefferson,

    É possível aceder por USB sim, mas isso requer que se trate de um dispositivo "Developer Unlocked", logo não creio ser a melhor solução...

    E então wifi, é opção? Assim podias simplesmente dizer ao cliente que se ligava a uma rede Wireless (podia mesmo ser uma ligação ad-hoc num portátil) e então enviavas os dados através de um webservice local.

    A vantagem é que para além de não serem precisos cabos, dado que é uma ligação wireless, fica totalmente de borla (sem necessidade de plano de dados)...


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    segunda-feira, 19 de setembro de 2011 11:20
  • Olá Pedro!

    Obrigado mais uma vez...

    Desculpe meu abuso e perdoe minha ignorância, mas poderia me explicar o que seria esse dispositivo "Developer Unlocked"... Preciso tentar ao máximo acessar esse arquivo via USB, por um motivo que não citei, que creio que possa vir a descrever melhor ainda minha situação... É o segiunte: esse arquivo não sérá escrito no aplicativo, é um arquivo que eu crio em uma aplicação à parte, defino algumas regrinhas, seto algumas propriedades e então posteriormente virei a importar para minha aplicação no WP7, depois que o usuário fizer o que tem que fazer nessa aplicação, preciso recuperar esses dados e importar novamente na minha aplicação à parte... Esse é o cenário pelo qual estou passando... E é por isso que preciso que seja da forma mais simples possível que seja realizado esse processo, e quando menos preso a influências externas, melhor... Até por que (pasme), o usuário possivelmente não estará em um local com acesso a nenhuma rede...

    Estou passando pela mesma dificuldade em Android, tenho algumas aplicações feitas para esse dispositivo, mas não consegui nada referente ao mesmo tema... Sei que aqui não é lugar para essas dúvidas, mas se também souber de algo referente a essa plataforma e puder me indicar, seria uma mão na roda...

    É mais ou menos isso que estou precisando, se puder me explicar então como é esse  "Developer Unlocked" ficarei muito grato...

     Obrigado pela paciência e pela atenção...

    Até mais, abraços...

    segunda-feira, 19 de setembro de 2011 12:55
  • Ok, eu explico melhor então! :)

    Neste momento, existem duas formas de instalar aplicações num qualquer dispositivo Windows Phone:

    • Através do Marketplace (e como tal, tem de ser uma aplicação publicada e aprovada)
    • Usando a aplicação "Application Deployment" que vem com o SDK (só possível em dispositivos "developer unlocked")

    Para poderes fazer Debug da tua aplicação no teu telefone físico tens que te registar no App Hub (pagando um valor de 99 USDolares anualmente), de forma a que te seja permitido desbloquear até 3 dispositivos para esse efeito; sem a conta (paga) do App Hub, não poderás testar as aplicações para além do emulador de Windows Phone que vem com o SDK...

    Nas aplicações instaladas via "Application Deplyment" é de facto possível aceder ao IsolatedStorage da aplicação por USB, usando o Isolated Storage Explorer; tens aqui um artigo da Microsoft a explicar como utilizar esta ferramenta.

    Pelo que pude perceber, o cenário que expões é deste tipo:

    • abrir a aplicação
    • receber um ficheiro
    • alterar os dados através da interface da aplicação
    • reenviar o ficheiro
    • fim!

    USB não me parece viável num Windows Phone que não esteja "developer unlocked", dado que neste momento não existe API de comunicação via USB no SDK; daí que para receber e enviar ficheiros (ou dados, que afinal é isso que um ficheiro é mesmo!) penso que a solução passa mesmo por WebServices!

    Nota que quando falo em "WebService" se não quiseres, não precisas de andar a inventar a roda, podes por exemplo recorrer a um componente de comunicação com DropBox para fazer o mesmo (tens aqui uma série deles em Open Source), tendo aqui a camada de serviço completamente implementada (só precisas mesmo de buscar o ficheiro, alterar, e guardar novamente); claro que neste caso vais precisar de ter ligação de dados...


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    segunda-feira, 19 de setembro de 2011 14:54
  • Olá Pedro!

    Então quer dizer que vai ser só um pouquinho (só um pouquinho!?! :p rss) diferente do que pensei que seria inicialmente...

    Pensando agora em publicação... Há uma forma de publicar no Marketplace, e, depois de aprovado eu conseguir restringir quem teria acesso à minha aplicação? Por exemplo, quero (e não só exemplo, sim uma situação real), que apenas os usuários que tiverem minha aplicação à parte possam ter essa aplicação no aparelho, pois senão, qualquer um poderia utilizá-lo, não entender do que se trata e sair espalhando que a aplicação não presta... Ou estou viajando demais?

    Pensando ainda em publicação... "Application Deployment" seria uma forma que eu conseguiria realizar o processo que necessito, não seria? Mas ficaria inviável ter que pagar, mesmo que anualmente, para poder rodar minha aplicação... Para três aparelhos, 99 U$ anuais... Para seis aparelhos já seriam 198U$... Seria outra dor de cabeça...

    E o cenário que percebeu é sim o meu cenário... \0/

    Mas imaginava que eu teria a liberdade de, como supus no meu primeiro post, poder colocar um arquivo em um cartão de memória e depois simplesmente ir lá, visualizá-lo, alterá-lo, mas não é assim que a banda toca...

    Se puder responder as minhas dúvidas logo acima, ficarei muito grato...

    Obrigado mesmo... Está me tirando muitas dúvidas...

    Até mais, abraços...


    • Editado Jefferson Alan segunda-feira, 19 de setembro de 2011 16:08 Erro de explicação...
    segunda-feira, 19 de setembro de 2011 16:06
  • O Marketplace funciona em 3 modos:

    • Public, em que todas as aplicações publicadas são visíveis e pesquisáveis por todos os utilizadores e como tal, podem ser instaladas em qualquer Windows Phone; as aplicações antes de ficarem visíveis, são testadas a aprovadas pela Microsoft
    • Beta, em que podes publicar uma versão beta da tua aplicação, sendo que esta não é testada pela Microsoft e não está visível no Marketplace; esta apenas pode ser acedida por um endereço (url) que terás de enviar para quem quiseres que a teste (sendo que terás de autorizar antes essa pessoa, adicionando o LiveID dela no Marketplace); estas aplicações não podem ser actualizadas e são apagadas 90 dias após a publicação inicial
    • Private, em que as aplicações passam pelos mesmos testes que passariam se fossem públicas, mas apenas são acessíveis via url; podem ser actualizadas quantas vezes quiseres

    Agora há aqui um pequeno problema: o modo Public e Beta já estão disponíveis neste momento, mas o Private que penso que é o que se adequaria ao teu cenário, ainda não está... mas acredito que estará para breve (possivelmente com o lançamento da actualização "Mango" :) )

    Infelizmente não poderás aceder a qualquer tipo de storage (cartão de memória ou afins) de uma aplicação Windows Phone (o SDK não te dá esse acesso, só mesmo ao Isolated Storage da própria aplicação)


    Pedro Lamas
    • Marcado como Resposta Jefferson Alan segunda-feira, 19 de setembro de 2011 16:28
    segunda-feira, 19 de setembro de 2011 16:15
  • Olá Pedro!

    Realmente o que melhor se enquadraria para meu caso seria o Private, mas o Beta já seria de grande valia...

    Poxa, que triste que não se possa fazer da forma que pensava... Saberia me dizer se a Microsoft tem o intuito de vir a aplicar isso em versões futuras, ou se estaria já disponível nessa nova versão do Mango?

    De toda forma, muito obrigado por me esclarecer essas dúvidas...

    Creio eu que se você não me respondesse, iria ficar ainda muito tempo a perder com minhas pesquisas sem retorno...

    Muitíssimo obrigado mesmo... Vou marcar sua resposta... Qualquer coisa, reabro o post, e se você estiver disponível, você me dá mais uma força, rss... Pode ser?

    Agradeço mais uma vez...

    Até mais, braços...

    segunda-feira, 19 de setembro de 2011 16:28
  • Ainda não sei nada de concreto relativamente a quando a Microsoft vai abrir o Private Marketplace (penso que não há data oficial)

    E qualquer questão, dispõe! ;)

    Abraço!


    Pedro Lamas
    segunda-feira, 19 de setembro de 2011 16:33