IMPORT_CONFIG
在 DataWedge 6.7 中引入。
用于导入 DataWedge 配置文件和/或配置设置文件。配置文件是单组设置,这些设置控制 DataWedge 如何处理一个或多个特定的应用程序和设备。配置文件 (Config file) 可以包含大量配置文件 (Profile),并存储所有其他 DataWedge 设置,包括其状态(已启用/已禁用)、日志记录和其他可配置参数。
导入配置文件 (Config file) (
database.db
) 将覆盖以前存储在设备上的所有 DataWedge 设置和配置文件 (Profile)。
Intent 行为
- 此 API 设计为已将新设置文件(配置或配置文件)推送至设备之后使用。
- 调用
IMPORT_CONFIG
Intent 时,它会检查使用FOLDER_PATH
属性指定的文件夹中是否福存在 DataWedge 设置文件。 - 如果找到配置文件(始终名为
datawedge.db
),则 DataWedge 重新启动并立即应用该文件中的设置,并永久擦除所有以前的 DataWedge 设置。 - 将所有导入的“配置文件 (Profile)”配置文件(始终名为
dwprofile_<profilename>.db
)添加到设备上可用的配置文件 (Profile) 列表。 - 如果设备上的某一配置文件与正在导入的配置文件同名,则导入的配置文件将会修改现有的配置文件。
- 如果指定的文件夹包含与当前处于活动状态的配置文件同名的配置文件,则会导入新的配置文件,并立即应用其设置。
IMPORT_CONFIG
Intent 正在运行时,会禁用自动导入功能。- 如果当前的配置文件与正在导入的配置文件之间存在重复的关联应用程序,则正在导入的配置文件将不会生效。例如,如果当前的配置文件 A 配置了关联的应用程序,并且该应用程序又与配置文件 B 关联,则在导入配置文件 B 时,由于重复,导入不会生效。如果某个应用程序在已禁用的应用程序列表中列出,而该应用程序又是正在导入的配置文件中的关联应用程序,则同样适用 - 导入不会生效,该应用程序仍保留在已禁用的应用程序列表中。
另请参阅:
函数原型
Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.IMPORT_CONFIG", <mainbundle>);
参数
ACTION [字符串]:"com.symbol.datawedge.api.ACTION"
EXTRA_DATA [字符串]:"com.symbol.datawedge.api.IMPORT_CONFIG"
BUNDLE:<主捆绑包>(请参阅下面的参数)
主捆绑包
主捆绑包 IMPORT_CONFIG
包括以下属性:
FOLDER_PATH [字符串]:要导入的配置文件的必需的文件夹路径和名称。
FILE_LIST [ArrayList<字符串>]:一个或多个所需数据库 (.db
) 文件的可选列表,此类文件位于在 FOLDER_PATH
参数中指定的文件夹中。如果未指定,则 DataWedge 导入所有带 .db
扩展名的文件,此类文件位于在 FOLDER_PATH
参数中指定的文件夹中。
Zebra 建议使用 getExternalFilesDirs
API 调用以在发送 IMPORT_CONFIG
Intent 之前标识设备中可访问的外部存储位置。例如:
File[] fileDirs = getExternalFilesDirs(null); Example return: /storage/34E4-1117/Android/data/<PackageName>/files /storage/sdcard2/0/Android/data/<PackageName>/files /storage/emulated/0/Android/data/<PackageName>/files
注意:上面显示的 "34E4-1117" 是指向外部 SD 卡的符号链接。
结果捆绑包
发送 IMPORT_CONFIG
Intent 后,DataWedge 广播带导入状态(成功或失败)的结果 Intent。结果信息将返回为包含 RESULT_CODE
和 RESULT_CODE_INFO
部分的捆绑包的 ArrayList,以描述其他信息。
RESULT [字符串]:"SUCCESS" 或 "FAILURE"
RESULT_INFO [ArrayList<捆绑包>]:
RESULT_CODE: 返回带指定文件夹/文件名称的以下结果或 RESULT_CODE_INFO
,如下所示:
- EMPTY_FOLDER_PATH –
FOLDER_PATH
为空或未指定 - INVALID_FOLDER_PATH – 指定的
FOLDER_PATH
无效- RESULT_CODE_INFO - "<文件夹路径>"
- INVALID_CONFIG_FILE – 指定文件夹中存在已损坏数据库文件
- CONFIG_FILE_NOT_EXIST - 指定文件夹中无有效 DataWedge 数据库文件
- RESULT_CODE_INFO - "dwprofile_<配置文件名称>.txt" , "dwA_<配置文件名称>.db"
- INVALID_FILE_NAME – 文件夹包含有效和无效 DataWedge .db 文件名
- RESULT_CODE_INFO - "<无效文件名>"
- CANNOT_READ_FILE – DataWedge 无法读取指定的数据库文件
返回值
将错误和调试消息记录到可通过 logcat 命令查看和过滤的 Android 日志记录系统。从 ADB Shell 使用 logcat 查看日志消息:
$ adb logcat -s DWAPI
记录无效操作和参数的错误消息
示例代码
使用路径导入文件:"/sdcard/configFolder"
private void importConfig() { //MAIN BUNDLE PROPERTIES Bundle bMain = new Bundle(); bMain.putString("FOLDER_PATH", "/sdcard/configFolder"); ArrayList<String> fileNames = new ArrayList<>(); fileNames.add("datawedge.db"); fileNames.add("dwprofile_profileA.db"); fileNames.add("dwprofile_profileB.db"); bMain.putStringArrayList("FILE_LIST", fileNames); // send the intent Intent i = new Intent(); i.setAction(ACTION); i.putExtra("com.symbol.datawedge.api.IMPORT_CONFIG", bMain); // request and identify the result code i.putExtra("SEND_RESULT","true"); i.putExtra("COMMAND_IDENTIFIER","123456789"); this.sendBroadcast(i); }
接收导入结果
// register to receive the result public void onReceive(Context context, Intent intent){ String command = intent.getStringExtra("COMMAND"); String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER"); String result = intent.getStringExtra("RESULT"); Bundle bundle = new Bundle(); String resultInfo = ""; if (intent.hasExtra("RESULT_INFO")) { ArrayList<Bundle> bundleList = intent.getParcelableArrayListExtra("RESULT_INFO"); if(bundleList!= null && !bundleList.isEmpty()){ for(Bundle resultBundle : bundleList){ Set<String> keys = resultBundle.keySet(); for (String key : keys) { if(key.equalsIgnoreCase("RESULT_CODE")){ resultInfo += key + ": " + resultBundle.getString(key); }else { resultInfo += key + ": " + resultBundle.getString(key) + "\n"; } } } } } }
另请参阅:
Zebra 支持中心 | 集成商指南、产品手册、软件下载和支持
LaunchPad | Zebra 开发人员社区
Intent | Android 开发人员
Intent 和 Intent 过滤器 | Android 开发人员
Android Intent | 教程