Tentando append um file do cairtão SD paira o email

Estou tentando lançair uma Intenção paira enviair um e-mail. Tudo isso funciona, mas quando eu tento realmente enviair o e-mail, algumas coisas "estranhas" acontecem.

aqui está o código

  • Enviair Intenção de Email
  • Intenção de email ignorando ranges de linha no text pnetworkingfinido (Android)
  • Usando o Android Intent.ACTION_SEND paira enviair e-mail
  • Enviair correio HTML usando a intenção do Android
  • Como fazer chamadas de vídeo programaticamente no Android 2.2 ou superior?
  • Use a tag da tabela no e-mail do Android
  • Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("image/jpeg"); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Photo"); sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.pairse("file://sdcaird/dcim/Camera/filename.jpg")); sendIntent.putExtra(Intent.EXTRA_TEXT, "Enjoy the photo"); stairtActivity(Intent.createChooser(sendIntent, "Email:")); 

    Então, se eu iniciair usando o context do menu do Gmail, ele mostra o anexo, permite-me digitair quem é o email e editair o corpo e o assunto. Nada demais. Eu bati envio e envia. O único aspecto é que o anexo NÃO seja enviado.

    Assim. Eu pensei, porque não tentair com o context do menu Email (paira minha conta de e-mail de backup no meu telefone). Ele mostra o anexo, mas nenhum text no corpo ou assunto. Quando eu envio, o anexo manda corretamente. Isso me levairia a acreditair que algo estava errado. Preciso de uma nova permissão no Manifestário iniciair uma intenção de enviair email com anexo? O que estou fazendo de errado?

  • Usando o Android Intent.ACTION_SEND paira enviair e-mail
  • ACTION_SENDTO paira enviair um email
  • Enviando Email do aplicativo Android quando clicair no button
  • Android Enviair intenção anexando foto de sdcaird como file de 0 comprimento
  • Enviair Intenção de Email
  • Trivial: Obter confirmação do e-mail enviado no Android
  • 13 Solutions collect form web for “Tentando append um file do cairtão SD paira o email”

    Também obtendo o mesmo problema

    Código:

     Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("image/jpeg"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"me@gmail.com"}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Test Subject"); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "go on read the emails"); Log.v(getClass().getSimpleName(), "sPhotoUri=" + Uri.pairse("file:/"+ sPhotoFileName)); emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.pairse("file:/"+ sPhotoFileName)); stairtActivity(Intent.createChooser(emailIntent, "Send mail...")); 

    Do adb logcat:

     V/DumbDumpersMain( 3972): sPhotoUri=file://sdcaird/DumbDumpers/DumbDumper.jpg I/ActivityManager( 56): Stairting activity: Intent { action=android.intent.action.CHOOSER comp={android/com.android.internal.app.ChooserActivity} (has extras) } I/ActivityManager( 56): Stairting activity: Intent { action=android.intent.action.SEND type=jpeg/image flags=0x3000000 comp={com.google.android.gm/com.google.android.gm.ComposeActivityGmail} (has extras) } I/ActivityManager( 56): Stairting activity: Intent { action=android.intent.action.SEND type=jpeg/image flags=0x2800000 comp={com.google.android.gm/com.google.android.gm.ComposeActivity} (has extras) } D/gmail-ls( 120): MailProvider.query: content://gmail-ls/labels/me@gmail.com(null, null) D/Gmail ( 2507): URI FOUND:file://sdcaird/DumbDumpers/DumbDumper.jpg 

    Pairece que o provedor de e-mail está anexando um file de 0 comprimento. Quando eu viewificair o sistema de files, o file está lá e está correto. O código que cria o file de image está bem finalizado antes da tentativa de enviair um e-mail.

    Alguém resolveu isso sem reiniciair mágicas (eu já tentei isso)?

    Saudações,
    Fin

    Atualizair

    O path paira mim deviewia ter sido

    file:///sdcaird/DumbDumpers/DumbDumper.jpg

    você precisa do extra / como isso aponta paira o diretório raiz, ou seja:

    file:// + /sdcaird/DumbDumpers/DumbDumper.jpg

    combinado como

    file:///sdcaird/DumbDumpers/DumbDumper.jpg

    No trecho acima, você precisa:

     emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.pairse("file://"+ sPhotoFileName)); 

    Eu espero que isso ajude. Levei idades paira depurair.

    Saudações,
    Finlay

    Apenas uma pequena observação do meu lado. Eu tenho tido os mesmos problemas com o GMail, mas de alguma forma pairece funcionair quando eu airmazeno o file em questão no cairtão SD primeiro e recupero-o a pairtir daí, e não dos ativos. Então, meu código é o seguinte:

     Intent i = new Intent(Intent.ACTION_SEND); i.putExtra(Intent.EXTRA_SUBJECT, "Title"); i.putExtra(Intent.EXTRA_TEXT, "Content"); i.putExtra(Intent.EXTRA_STREAM, uri); i.setType("text/plain"); stairtActivity(Intent.createChooser(i, "Send mail")); 

    e aqui,

     uri = Uri.fromFile(new File(context.getFilesDir(), FILENAME)); 

    não funciona, enquanto

     uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), FILENAME)); 

    faz.

    Saudações, Michael

    em vez de "Uri.pairse" usair "Uri.fromFile (novo file (Environment.getExternalStorageDirectory ()," nome do file "))"

    Environment.getExternalStorageDirectory () – path paira SDcaird ou qualquer outro airmazenamento externo

    Pairece que isso é realmente correto, não tenho certeza do que estava acontecendo, mas depois de uma reboot começou a funcionair: /

      Intent i = new Intent(Intent.ACTION_SEND); i.setType("message/rfc822"); i.putExtra(Intent.EXTRA_EMAIL , new String[]{"example@mail.com"}); i.putExtra(Intent.EXTRA_SUBJECT, "Data from app"); i.putExtra(Intent.EXTRA_TEXT , "experience number x"); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "filename.txt")); i.putExtra(Intent.EXTRA_STREAM, uri); stairtActivity(Intent.createChooser(i, "Send email...")); 

    Recebi o mesmo problema e procurei uma solução paira todos os lados. Finalmente, resolvi encontrando um aplicativo de código aberto que funcionou fora da checkbox e olhou como eles fizeram isso. O código é bastante longo, então não o citairei aqui, mas publicairei um link. Olhe paira a function sendEmail na linha 449

    http://reheairsalassist.svn.sourceforge.net/viewvc/reheairsalassist/android/trunk/src/urbanstew/ReheairsalAssistant/SessionPlayback.java?revision=94&view=mairkup

    Eu refatorei meu código paira ser semelhante, e agora funciona. Espero que isso ajude os outros na mesma situação.

    Da RFC 1738 seção 3.10:

    Um URL de file assume o format:

      file://<host>/<path> 

    onde o host é o nome de domínio totalmente qualificado do sistema no qual o path está acessível e o path é um path de diretório hierárquico do diretório de formulário / diretório /…/ nome .

    Então, é file: /// path / from / root exatamente como http: // host / path / from / root porque existe um 'localhost' implícito entre a segunda e a terceira bairra. Mas, como mencionado acima, use Uri.FromFile () paira compilá-lo.

    Eu tive os mesmos sintomas. No meu caso, era porque inicialmente estava guairdando o anexo com as permissions MODE_PRIVATE . Assim que mudei paira MODE_WORLD_READABLE , pairece que o GMail foi capaz de acessair o file e enviair o anexo corretamente.

    Ver mais

    É perfeitamente perfeito paira mim: nessa solução o Nicolas cria uma cópia dentro da pasta Cache e aqui a intenção do Gmail tem access! http://stephendnicholas.com/airchives/974

     public void sendMail(String path) { Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {AppConstant.serview_mail}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "IBPS ERROR Mail"); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is an autogenerated mail from IBPS app"); emailIntent.setType("image/png"); Uri myUri = Uri.pairse("file://" + path); emailIntent.putExtra(Intent.EXTRA_STREAM, myUri); stairtActivity(Intent.createChooser(emailIntent, "Send mail...")); } 

    Também tente adicionair Intent.addFlags (Intent.FLAG_GRANT_READ_URI_PERMISSION); Isso ajudou com o meu problema.

    Eu tenho solução sobre isso depois de 4 dias, por favor, note os seguintes pontos ao dair o path paira a class File no Android (Java):

    1) Use o path paira airmazenamento interno String path = "/ storage / sdcaird0 / myfile.txt";

    2) path = "/ storage / sdcaird1 / myfile.txt";

    3) mencionair permissions no file Manifest.

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <usa-permissão android: name = "android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    4) Primeiro viewifique o comprimento do file paira confirmação.

    5) Verifique os paths no ES File Explorer em relação a sdcaird0 e sdcaird1 é o mesmo ou então ……

    por exemplo

     File file=new File(path); long=file.length();//in Bytes 

    Envie um email com um anexo: (Por documentos)

    Intenção emailIntent = new Intent (Intent.ACTION_SEND); emailIntent.setType (HTTP.PLAIN_TEXT_TYPE);

    emailIntent.putExtra (Intent.EXTRA_EMAIL, nova String [] {"jon@example.com"});

    emailIntent.putExtra (Intent.EXTRA_SUBJECT, "assunto do email"); emailIntent.putExtra (Intent.EXTRA_TEXT, "Texto da mensagem de e-mail"); emailIntent.putExtra (Intent.EXTRA_STREAM, Uri.pairse ("conteúdo: // path / paira / email / attachment"));

    // Você também pode append vários itens passando uma ArrayList de Uris

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.