Hello!
Way back in April I tried to figure out how to automatically configure the profile to set up basic text formatting output. That thread is here:
Since the configuration was relatively simple, I left that task until last, and I am just now getting to implementing the code. After three days of searching and trying, I am not able to get auto import to work in any way, shape, or form. I have tried both a profile, and a configuration. I used the same names that were created by the export. I've tried at least three methods of copying the file. Nothing has worked. Help?
Here's my c# code:
using System;using System.IO;using Java.IO;using System.Threading.Tasks;using Xamarin.Forms;using Android.Views;using Android.Content.Res;using Plugin.CurrentActivity;using Acr.UserDialogs;
...
private bool setuptask() {
// Somewhere I saw a recommendation to not name the asset with a "known" suffix, use
// something like .dat instead. So I tried that... string importpath = "/enterprise/device/settings/datawedge/autoimport/"; string tempfile = "/enterprise/device/settings/datawedge/datawedge.dat"; string importfile = "/enterprise/device/settings/datawedge/autoimport/datawedge.db"; string otherfile = "/enterprise/device/settings/datawedge/autoimport/dwprofile_ScanOrders.db"; string assetname = "datawedge.dat"; string filename = "datawedge.db"; try { // Make sure directory exists... if (Directory.Exists(importpath) == false) { Directory.CreateDirectory(importpath); } // Clear out any old files... I have been switching back and forth
// between the two files, so I clean up both of them before re-copying. if (System.IO.File.Exists(tempfile) == true) { System.IO.File.Delete(tempfile); } if (System.IO.File.Exists(otherfile) == true) { System.IO.File.Delete(otherfile); }
// If I set a breakpoint here. The second time I call the function,
// the file exists. (I wait a minute or two before the 2nd call.) if (System.IO.File.Exists(importfile) == true) { System.IO.File.Delete(importfile); } // Create temp file from our assets Android.App.Activity context = CrossCurrentActivity.Current.Activity; AssetManager assets = context.Assets; using (BinaryReader br = new BinaryReader(assets.Open(assetname))) { using (BinaryWriter bw = new BinaryWriter(new FileStream(tempfile, FileMode.Create))) { byte[] buffer = new byte[2048]; int len = 0; while ((len = br.Read(buffer, 0, buffer.Length)) > 0) { bw.Write(buffer, 0, len); } } }
// Move the file into place so auto import doesn't try to pick it up before
// the copy is complete. System.IO.File.Move(tempfile, importfile);
// Set permissions, in case that was the problem. I was setting executable, but
// saw example code that the author claimed worked, and he only set readable and
// writable. So I took it back out. using (var newfile = new Java.IO.File(importpath, filename)) {
// I added this bit so I could check that the file is actually
// created. I don't know if the contents are correct, but the copied
// file is ~9000 bytes long. long len = newfile.Length(); if ((newfile.Exists() == false) || (len
1 Replies
Hi, please see the code sample at DataWedge Settings - Zebra Technologies TechDocs which is known to work. Also, I have an unofficial sample on my personal github, GitHub - darryncampbell/DataWedgeAutoImport: Sample app to show DataWedge auto import feature
Both samples are in Java but hopefully show the correct principle.