IMPORT_CONFIG
DataWedge 6.7 で導入。
DataWedge プロファイルや構成設定ファイルをインポートするために使用します。プロファイルは単一の設定グループであり、DataWedge での 1 つ以上の特定のアプリケーションやデバイスの動作を制御します。構成ファイルには多数のプロファイルを含めることができ、ステータス (有効/無効)、ログ、構成可能パラメータなど、その他すべての DataWedge 設定を保存できます。
構成ファイル (
database.db
) をインポートすると、デバイスに以前保存されていたすべての DataWedge 設定とプロファイルが上書きされます。
インテントの動作
- この API は、新しい設定ファイル (構成またはプロファイル) がデバイスにプッシュされた後で使用するように設計されています。
IMPORT_CONFIG
インテントが呼び出されると、FOLDER_PATH
属性で指定されたフォルダに DataWedge 設定ファイルが存在するかどうかがチェックされます。- 構成ファイル (常に「
datawedge.db
」と呼ばれる) が検出されると、DataWedge が再起動し、そのファイルの設定がただちに適用され、以前のすべての DataWedge 設定が完全に消去されます。 - インポートされたすべてのプロファイル構成ファイル (常に「
dwprofile_<profilename>.db
」と呼ばれる) が、デバイス上の使用可能なプロファイルのリストに追加されます。 - インポートされるプロファイルと同じ名前のプロファイルがデバイスに存在する場合、インポートされるプロファイルによって既存のプロファイルが変更されます。
- 指定したフォルダに現在アクティブなプロファイルと同じ名前のプロファイルが含まれている場合、新しいプロファイルがインポートされ、その設定がすぐに適用されます。
IMPORT_CONFIG
インテントの実行中、自動インポート機能は無効になります。- 現在のプロファイルとインポートされるプロファイルの間で、関連付けられたアプリが重複している場合、インポートされるプロファイルは有効になりません。たとえば、現在のプロファイル A が、関連付けられたアプリで構成されており、その同じアプリが、プロファイル B に関連付けられている場合、プロファイル B をインポートしても重複するため、そのインポートは有効になりません。同様に、あるアプリが無効アプリ リストにリストされており、その同じアプリが、インポートされるプロファイルにおいて関連付けられたアプリである場合にも、これが当てはまります。つまり、インポートは有効にならず、そのアプリは無効アプリ リストに残ります。
関連項目:
関数プロトタイプ
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.IMPORT_CONFIG", <mainbundle>);
パラメータ
ACTION [String]: "com.symbol.datawedge.api.ACTION"
EXTRA_DATA [String]: "com.symbol.datawedge.api.IMPORT_CONFIG"
バンドル: <メイン バンドル> (以下のパラメータを参照)
メイン バンドル
メインの IMPORT_CONFIG
バンドルには、次のプロパティが含まれます。
FOLDER_PATH [String]: インポートする構成ファイルのフォルダ パスと名前が必要です。
FILE_LIST [ArrayList<String>]: FOLDER_PATH
パラメータで指定したフォルダ内の 1 つ以上の必要なデータベース (.db
) ファイルのオプション リスト。指定されていない場合は、FOLDER_PATH
パラメータで指定されたフォルダ内の .db
拡張子を持つすべてのファイルがインポートされます。
IMPORT_CONFIG
インテントを送信する前に、getExternalFilesDirs
API 呼び出しを使用して、デバイス内のアクセス可能な外部ストレージの場所を特定することをお勧めします。例:
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
インテントが送信されると、インポートのステータス (成功または失敗) 付きの結果インテントがブロードキャストされます。結果情報は、追加情報を記述するために、RESULT_CODE
および RESULT_CODE_INFO
セクションを含むバンドルの ArrayList として返されます。
RESULT [String]: 「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 で、指定したデータベース ファイルを読み取れませんでした
コード例
パスを使用したファイルのインポート: "/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 Support Central | インテグレータ ガイド、製品マニュアル、ソフトウェア ダウンロードおよびサポート
LaunchPad | Zebra 開発者コミュニティ
インテント | Android 開発者
インテントおよびインテント フィルタ | Android 開発者
Android インテント | チュートリアル