2014-11-05 16 views
5

Ich habe ein paar Möglichkeiten versucht, eine E-Mail mit Python in der Kivy App auf Android zu senden. Der nächste, den ich komme, ist Plyers E-Mail-Funktion (https://plyer.readthedocs.org/en/latest/#plyer.facades.Email), aber es scheint nicht Anhänge zu unterstützen.Senden Sie E-Mail mit Anhang von Kivy App auf Android, vorzugsweise durch Öffnen von E-Mail-Client

Ich möchte, dass meine App den E-Mail-Client des Benutzers öffnet und die Felder recipient, find, body und attachment ausfüllt. Der Anhang wird eine .csv-Datei sein, die von meiner App generiert wird.

Hat jemand Vorschläge, wie man das macht? Wie kann ich diesen Code ändern, um Anhänge hinzuzufügen?

from jnius import autoclass, cast 
from plyer.facades import Email 
from plyer.platforms.android import activity 

Intent = autoclass('android.content.Intent') 
AndroidString = autoclass('java.lang.String') 


class AndroidEmail(Email): 
    def _send(self, **kwargs): 
    intent = Intent(Intent.ACTION_SEND) 
    intent.setType('text/plain') 

    recipient = kwargs.get('recipient') 
    subject = kwargs.get('subject') 
    text = kwargs.get('text') 
    create_chooser = kwargs.get('create_chooser') 

    if recipient: 
     intent.putExtra(Intent.EXTRA_EMAIL, [recipient]) 
    if subject: 
     android_subject = cast('java.lang.CharSequence', 
           AndroidString(subject)) 
     intent.putExtra(Intent.EXTRA_SUBJECT, android_subject) 
    if text: 
     android_text = cast('java.lang.CharSequence', 
          AndroidString(text)) 
     intent.putExtra(Intent.EXTRA_TEXT, android_text) 

    if create_chooser: 
     chooser_title = cast('java.lang.CharSequence', 
          AndroidString('Send message with:')) 
     activity.startActivity(Intent.createChooser(intent, 
                chooser_title)) 
    else: 
     activity.startActivity(intent) 


def instance(): 
    return AndroidEmail() 

Antwort

1

Der ältere hat android module Unterstützung einen Dateinamen für das Bestehen. Sie können dies direkt verwenden oder die Funktion zu plyer hinzufügen, indem Sie die relevanten Teile der Android API aufrufen. Ich weiß aber nicht genau, wie Sie das machen.