Ges
Ges

Reputation: 1

android zxing library for qr code

When i scan this barcode

enter image description here

i get this resultScan

enter image description here

but i want this content result to detect if it contains SMS or Email Message in that way, for example if this content contains EMail Message i need to open Email window and i want to fill fields such as To: with this email, also subject and Body.

my code up to now is:

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

Upvotes: 0

Views: 660

Answers (2)

Gorio
Gorio

Reputation: 1646

You need to double check if email TO have more then one, in this example i considered just one e-mail. If you see email.getTos() method, you'll see that is a String[].

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:
    }
}

Upvotes: 2

banking
banking

Reputation: 500

I scan your qrcode and get these raw text: "MATMSG:TO:[email protected];SUB:hello;BODY:hdfukfhdksu;;".

Step 1.You should parse your schema get a EmailSendObject such as below:

   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;
    }

Step 2.Send Email by android action : "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!"));
}

Upvotes: -1

Related Questions