onNewIntent not called for TC56.

I am trying to get the Scanner value via intent filter.

First of all, I have a BaseActivity which is extended by Every other activity, I tried to implement it there, but all I could manage was get the Scanned Value in the EditText.

onNewIntent() was not called at all.

 

Now I have exactly same code in two Activities. I get the result in one of the activities and not in other.

Following is the code that I wrote following the documentation:

 

private String profileName = "PackageScan";
private ProfileManager mProfileManager = null;
private EMDKManager emdkManager = null;

 

@Override
   protected void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);
   initAddlayout(R.layout.activity_scanner);
   EMDKResults results = EMDKManager.getEMDKManager(getApplicationContext(), this);
  if(results.statusCode == EMDKResults.STATUS_CODE.FAILURE)

  {

   //Failed to create EMDKManager objec
   }

 

//CRASHES IF I UN-COMMENT THIS

   /* Intent i = getIntent();
  handleDecodeData(i);*/
   }

   @Override
   protected void onDestroy() {

   emdkManager.release();
  super.onDestroy();
   }

   @Override
   public void onOpened(EMDKManager emdkManager) {

   this.emdkManager = emdkManager;
//Get the ProfileManager object to process the profiles
   mProfileManager = (ProfileManager) emdkManager.getInstance(EMDKManager.FEATURE_TYPE.PROFILE);
  if(mProfileManager != null)

  {

   try{

 

  String[] modifyData = new String[1];
   //Call processPrfoile with profile name and SET flag to create the profile. The modifyData can be null.

   EMDKResults results = mProfileManager.processProfile(profileName, ProfileManager.PROFILE_FLAG.SET, modifyData);
  if(results.statusCode == EMDKResults.STATUS_CODE.FAILURE)

  {

   //Failed to set profile
   }

  }catch (Exception ex){

   // Handle any exception
   }

 

  }

  }

 

   @Override
   public void onClosed() {

 

  }

 

   @Override
   public void onNewIntent(Intent i) {

  handleDecodeData(i);

   }

   private void handleDecodeData(Intent i) {

   if (i.getAction().contentEquals("app.iwiz.mypack.RECVR")) {

  String source = i.getStringExtra("com.motorolasolutions.emdk.datawedge.source");

//Check if the data has come from the Barcode scanner
   if (source.equalsIgnoreCase("scanner")) {

  String data = i.getStringExtra("com.motorolasolutions.emdk.datawedge.data_string");

//Check that we have received data
   if (data != null && data.length() > 0) {

  }

  }

  }

  }

 

 

The Same Code is written in ScannerActivity as well as TrackingListActivity .

 

When I scan while I am on ScannerActiivty, I immediately get two options to complete the request. One takes me to TrackingListActivity and other brings me to onNewIntent in same ScannerActivity .

I Understand this behavious is because I am using same Intent-filter and even same EMDK - Profile.

While on the other hand, when I scan while I am in TrackingListActivity , the onNewIntent doesn't get called. Neither do I get the option to complete request. I get the scanned value in EditText though.

 

I can't understand how the Context works overall.

I have 7-8  activities where I have to scan, so I want to get the scanned value to me in the BaseActivity itself.