Reputation: 1
When i scan this barcode
i get this resultScan
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
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
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