2015-03-02 60 views
10

Bir ek dosya ile varsayılan e-posta istemcisini bastıktan sonra açacağı bir düğme uygulamak istiyorum.Android'de programatik olarak ekleri olan bir e-posta gönderme

this izliyorum, ancak bir amaç verirken bir etkinlik parametresi beklediğini söyleyerek startActivity üzerinde bir hata iletisi alıyorum. API 21 ve Android Studio 1.1.0 kullanıyorum, belki de bağlantıda sağlanan yanıttaki yorumla ilgili bir şey var mı?

Bu, Android geliştiricisi olarak benim dördüncü günüm, gerçekten temel bir şey eksik olursam çok üzgünüm. Ben senin sorunun doğru dosya yolu kullanarak olmadığını düşünüyorum

public void sendFileToEmail(File f){ 

    String subject = "Lap times"; 
    ArrayList<Uri> attachments = new ArrayList<Uri>(); 
    attachments.add(Uri.fromFile(f)); 
    Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
    intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, attachments); 
    intent.setClassName("com.android.email", "com.android.mail.compose.ComposeActivity"); 

    try { 
     startActivity(intent); 
    } catch (ActivityNotFoundException e) { 
     e.printStackTrace(); 
    } 
+0

Cevabını benim için işe yaradıysa kabul et. Böylece, SOF –

cevap

17

:

İşte benim kodudur. Benim için

aşağıdaki çalışır:

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.setType("text/plain"); 
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject here"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "body text"); 
File root = Environment.getExternalStorageDirectory(); 
String pathToMyAttachedFile = "temp/attachement.xml"; 
File file = new File(root, pathToMyAttachedFile); 
if (!file.exists() || !file.canRead()) { 
return; 
} 
Uri uri = Uri.fromFile(file); 
emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 
startActivity(Intent.createChooser(emailIntent, "Pick an Email provider")); 

Ayrıca this.It çalışıyor ...

kullanmak dene
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

'daki yanıtlanmamış soru listesinden bu soruyu önleyebilirsiniz. Dosya bu işlevin bir parametresidir, bu yüzden sorunun nasıl olabileceğini göremiyorum. –

+0

Dosya sadece bir parametredir, ancak kullanılabilir olup olmadığını kontrol etmeniz gerekir. Ve dosyaları okumak için okunan Harici Depolama izni vermeniz gerekir. –

+1

Bu çalışıyor .. Çok teşekkürler .. :) – Kushal

2

aşağıdaki gibi bir bildirim dosyası ile kullanıcı izni vermek gerekir
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        emailIntent.setType("*/*"); 

        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(listVideos.get(position).getVideoPath())));//path of video 
        startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

Teşekkür