8 Replies Latest reply on Jun 19, 2017 5:37 PM by Yusuke Hiraoka

    How to get rawdata from DataWedge on App with Xamarin ?

    Yusuke Hiraoka

      I building App on Xamarin.Forms.


      How to get rawdata from Datawedge on App with Xamarin ?


      I use Broadcastreceiver and Intent Action.


      DATA_STRING_TAG -> GetStringExtra


      DECODE_DATA_TAG -> ???


      Thank you.

        • Re: How to get rawdata from DataWedge on App with Xamarin ?
          Daniel Silva

          I have not used Xamarin Forms yet,  but the below works in a regular Xamarin app.  I have also attached the whole project in case that helps.


          using System;

          using Android.App;

          using Android.Content;

          using Android.Runtime;

          using Android.Views;

          using Android.Widget;

          using Android.OS;

          using Java.IO;



          namespace DwMultiActivity


              [Activity(Label = "DwMultiActivity", MainLauncher = true, Icon = "@drawable/icon", LaunchMode = Android.Content.PM.LaunchMode.SingleInstance)]

              public class MainActivity : Activity


                  private static String SOURCE_TAG = "com.symbol.datawedge.source";

                  private static String DATA_STRING_TAG = "com.symbol.datawedge.data_string";

                  private static String LABEL_TYPE_TAG = "com.symbol.datawedge.label_type";

                  private static TextView tvScanData;

                  Button btnScan;

                  private handleBarcode mHandleBarcode;



                  private static Button btnNextActivity;





                  protected override void OnCreate(Bundle bundle)






                      mHandleBarcode = new handleBarcode();

                      // Set our view from the "main" layout resource


                      tvScanData = FindViewById<TextView>(Resource.Id.tvScanData);

                      TextView tvAct = FindViewById<TextView>(Resource.Id.tvCurrentActivity); //this is just to show which activity is on the screen

                      tvAct.Text = this.ComponentName.ShortClassName.Split('.')[1];  //this is just to show which activity is on the screen

                      btnScan = FindViewById<Button>(Resource.Id.btnScan);

                      btnNextActivity = FindViewById<Button>(Resource.Id.btnNextActivity);

                      btnScan.Click += delegate


                          Intent i = new Intent();


                          i.PutExtra("com.symbol.datawedge.api.EXTRA_PARAMETER", "START_SCANNING");





                      btnNextActivity.Click += delegate







                  protected override void OnResume()


                      IntentFilter filter = new IntentFilter("com.zebra.silva.dwmultiactivityexample.RECVR");

                      RegisterReceiver(mHandleBarcode, filter);



                  protected override void OnPause()









                  public void installDwProfile()


                      // copy datawedge profile from assets to autoimport folder on device.  This should only need to be done once enless someone actually removes the profile in datawedge

                      var tempPath = "/enterprise/device/settings/datawedge/dwprofile_DwMultiActivityTest.db"; // copy it here first and fix permissions before moving to autoimport

                      var filePath = "/enterprise/device/settings/datawedge/autoimport/dwprofile_DwMultiActivityTest.db";



                      using (var asset = Assets.Open("dwprofile_DwMultiActivityTest.db")) using (var dest = System.IO.File.Create(tempPath))


                      Java.IO.File file1 = new File(tempPath);

                      file1.SetReadable(true, false);

                      file1.SetWritable(true, false);

                      System.IO.File.Move(tempPath, filePath);






                  public class handleBarcode : BroadcastReceiver




                      public override void OnReceive(Context context, Intent i)


                          // define a string that will hold our output

                          //String out = new String();

                          // get the source of the data

                          String sSource = i.GetStringExtra(SOURCE_TAG);

                          // save it to use later

                          if (sSource == null) sSource = "scanner";

                          // get the data from the intent

                          String sData = i.GetStringExtra(DATA_STRING_TAG);

                          // let's define a variable for the data length

                          int data_len = 0;

                          // and set it to the length of the data

                          if (sData != null) data_len = sData.Length;

                          // check if the data has come from the barcode scanner

                          if (sSource.ToLower().Equals("scanner"))


                              // check if there is anything in the data

                              if (sData != null && sData.Length > 0)


                                  // we have some data, so let's get it's symbology

                                  String sLabelType = i.GetStringExtra(LABEL_TYPE_TAG);

                                  String temp = sSource + ":" + sLabelType + ":" + sData;

                                  tvScanData.Text = sSource + ":" + sLabelType + ":" + sData;