2016-04-14 1 views
0

Quand je scanne ce code à barresbibliothèque android ZXing pour le code qr

enter image description here

i obtenir ce resultScan

enter image description here

mais je veux ce résultat de contenu pour détecter si elle contient des SMS ou e-mail Message de cette façon, par exemple si ce contenu contient un message électronique, j'ai besoin d'ouvrir la fenêtre Email et je veux remplir des champs tels que A: avec cet e-mail, aussi sujet et corps.

mon code jusqu'à maintenant:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    String content = intent.getStringExtra("SCAN_RESULT"); 
} 
+0

vous pouvez casser votre chaîne de contenu sur la base du côlon demi pour obtenir vos messages séparés –

+0

séparent les valeurs de faisceau et si vous trouvez email dans ce courriel then else SMS –

+0

Vivek Mishra si j'ai des points-virgules dans le corps – Ges

Répondre

-1

je scanne votre QRCode et obtenir ces textes bruts: "MATMSG: A: [email protected], SUB: bonjour, CORPS: hdfukfhdksu ;;".

étape 1.You devrait analyser votre schéma obtenir un EmailSendObject, comme ci-dessous:

public static EmailSendObject parseQrcodeText(String rawText){ 
     //todo parse; 
     EmailSendObject.recipent;//should be "[email protected]" 
     EmailSendObject.subject;//should be "hello" 
     EmailSendObject.cc; 
     EmailSendObject.content;//should be "hdfukfhdksu;" 
     return EmailSendObject; 
    } 

étape 2.ENVOI Email par l'action android: "ACTION_SENDTO".

public static void sendEmail(Activity activity,EmailSendObject object){ 
    Uri uri = Uri.parse("mailto:"+object.recipient); 
    Intent intent = new Intent(Intent.ACTION_SENDTO, uri); 
    intent.putExtra(Intent.EXTRA_CC, object.cc); 
    intent.putExtra(Intent.EXTRA_SUBJECT, object.subject); 
    intent.putExtra(Intent.EXTRA_TEXT, object.content); 
    activity.startActivity(Intent.createChooser(intent, "Choose a email app!")); 
} 
+0

Lire la question et les commentaires à nouveau: ** Ma question est de savoir comment obtenir le type du code à barres comme le texte, URL, carnet d'adresses, numéro de téléphone, adresse e-mail. ** Ce n'est rien lié aux intentions de courrier électronique. –

+0

EmailSendObject ne reconnaît pas, devrais-je créer une classe – Ges

+0

Identifier ces types de résultat (texte, URL, carnet d'adresses, numéro de téléphone, adresse e-mail), cela dépend du schéma.Aucune façon de détecter automatiquement! Vous devez l'analyser par Une.Ma réponse est comment analyser le texte d'email et envoyer l'email. – banking

2

Vous devez vérifier si le courrier électronique a plus d'un, dans cet exemple, je considère un seul courriel. Si vous voyez la méthode email.getTos(), vous verrez que c'est une chaîne [].

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 

    Result res = new Result(scanResult.getContents(), null, null, BarcodeFormat.QR_CODE); 
    ParsedResult parserdResult = ResultParser.parseResult(res); 

    Log.d("GORIO", "TYPE: " + parserdResult.getType().toString()); 

    switch (parserdResult.getType()) { 
     case ADDRESSBOOK: 
      Log.d("GORIO", "ADDRESSBOOK: " + parserdResult.getDisplayResult()); 
      break; 
     case EMAIL_ADDRESS: 
      Log.d("GORIO", "EMAIL_ADDRESS: " + parserdResult.getDisplayResult()); 
      EmailAddressParsedResult email = (EmailAddressParsedResult) parserdResult; 

      if (email.getTos().length > 0) 
       Log.d("GORIO", "E-mail: " + email.getTos()[0] + " Subject: " + email.getSubject() + " Body: " + email.getBody()); 
      break; 
     case PRODUCT: 
      ProductParsedResult prod = (ProductParsedResult) parserdResult; 
      Log.d("GORIO", "PRODUCT: " + scanResult.getContents()); 
      break; 
     case URI: 
      URIParsedResult uri = (URIParsedResult) parserdResult; 
      Log.d("GORIO", "URI: " + scanResult.getContents()); 
      break; 
     case GEO: 
      GeoParsedResult geo = (GeoParsedResult) parserdResult; 
      Log.d("GORIO", "GEO: " + scanResult.getContents()); 
      break; 
     case TEL: 
      TelParsedResult tel = (TelParsedResult) parserdResult; 
      Log.d("GORIO", "TEL: " + scanResult.getContents()); 
      break; 
     case SMS: 
      Log.d("GORIO", "SMS: " + scanResult.getContents()); 
      SMSParsedResult sms = (SMSParsedResult) parserdResult; 
      Log.d("GORIO", "SMS: " + sms.getNumbers()); 
      break; 
     case CALENDAR: 
      Log.d("GORIO", "CALENDAR: " + scanResult.getContents()); 
      break; 
     case ISBN: 
      ISBNParsedResult isbn = (ISBNParsedResult) parserdResult; 
      Log.d("GORIO", "ISBN: " + scanResult.getContents()); 
      break; 
     default: 
    } 
} 
+0

Merci beaucoup @Gorio, ça m'a été utile – Ges

+0

merci beaucoup @ Gorio, ça m'a été utile –