EXPORT_CONFIG
EXPORT_CONFIG API を使用すると、DataWedge プロファイルおよび構成設定ファイルをエクスポートできます。これにより、構成設定を保存して後でインポートしたり、DataWedge の設定を他のデバイスに複製したりすることができます。
DataWedge プロファイルは、DataWedge が特定のアプリケーションやデバイスと連携する方法を制御する設定の集まりです。DataWedge 構成ファイルには、複数のプロファイルに加え、ステータス (有効/無効)、ログ記録、各種の設定可能なパラメータなど、その他すべての DataWedge 設定を含めることができます。
DataWedge 構成をパブリック フォルダにエクスポートする場合には、次の制限があります。
- Android のファイル アクセス制限 (Scoped Storage): アプリは、DataWedge インテント API を使用して、
/Documentsなどのパブリック フォルダにファイルを直接エクスポートすることはできません。Android では、アプリに昇格権限 (MANAGE_EXTERNAL_STORAGE) が付与されていない限り、パブリック ディレクトリへのアクセスが制限されます。この権限は、カスタム アプリでは使用できません。 - パブリック フォルダへのエクスポート: 構成をパブリック フォルダにエクスポートするには、DataWedge UI を使用する必要があります。DataWedge UI には、これらの制限を回避できるシステム レベルの昇格権限があります。
インテントの動作
EXPORT_CONFIG は、DataWedge プロファイルまたは構成ファイルを指定されたフォルダにエクスポートするためのインテントを送信します。エクスポートされたファイルは、バックアップに使用したり、他のデバイスに転送したりできます。
EXPORT_CONFIG インテントが呼び出されると、ファイルが指定されたフォルダにエクスポートされます。各ファイル名は、エクスポートされた構成の種類を示します。
datawedge.db- 現在の DataWedge 構成設定がデータベース ファイルとして保存されています。dwprofile_<profilename>.db個別の DataWedge プロファイル設定が含まれています。
関数プロトタイプ
Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.EXPORT_CONFIG", <mainbundle>);
パラメータ
ACTION [String]: "com.symbol.datawedge.api.ACTION"
EXTRA_DATA [String]: "com.symbol.datawedge.api.EXPORT_CONFIG"
BUNDLE: <メイン バンドル> (以下のパラメータを参照)
メイン バンドル
メインの EXPORT_CONFIG バンドルには、次のプロパティが含まれます。
- FOLDER_PATH [String]: 構成ファイルのエクスポート先となる必須のフォルダパスです。
- export_type [String]: エクスポートするファイルの種類を指定します。プロファイルの場合は「PROFILE_CONFIG」、構成ファイルの場合は「FULL_CONFIG」を指定します。
- PROFILE_NAME [String] (任意): エクスポートするプロファイルの名前です。
EXPORT_TYPEが「PROFILE_CONFIG」の場合にのみ必須です。
結果バンドル
EXPORT_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_<profilename>.db」または「datawedge.db」
- INVALID_FILE_NAME – フォルダに DataWedge の有効/無効な .db ファイル名が含まれています
- RESULT_CODE_INFO - "<無効なファイル名>"
コード例
ファイルのエクスポート
private void exportConfig() { // Main Bundle properties Bundle bMain = new Bundle(); bMain.putString("FOLDER_PATH", path); // FOLDER_PATH: /storage/emulated/0/Download/ bMain.putString("EXPORT_TYPE", configType); // EXPORT_TYPE: PROFILE_CONFIG or FULL_CONFIG if (configType.equals("PROFILE_CONFIG")) { bMain.putString("PROFILE_NAME", profileName); } // Send the intent Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.EXPORT_CONFIG", bMain); // Request and identify the result code i.putExtra("SEND_RESULT", "true"); i.putExtra("COMMAND_IDENTIFIER", "123456789"); this.sendBroadcast(i); }
エクスポート結果の受信
Private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "Received intent: " + intent); // Validate expected extras if (!intent.hasExtra("COMMAND_IDENTIFIER") || !intent.hasExtra("RESULT")) { Log.d(TAG, "Received intent without expected extras: " + intent.getExtras()); return; } String commandIdentifier = intent.getStringExtra("COMMAND_IDENTIFIER"); String result = intent.getStringExtra("RESULT"); // Check if the command identifier matches if (!"123456789".equals(commandIdentifier)) { Log.d(TAG, "Unrecognized COMMAND_IDENTIFIER: " + commandIdentifier); return; } if ("SUCCESS".equals(result)) { Toast.makeText(context, "Export Successful", Toast.LENGTH_LONG).show(); Log.d(TAG, "Export Successful"); } else { handleExportFailure(context, intent); } } /** * Handles export failure by processing the RESULT_INFO bundle. * * @param context The application context. * @param intent The intent containing failure details. */ private void handleExportFailure(Context context, Intent intent) { ArrayList<Bundle> bundleList = intent.getParcelableArrayListExtra("RESULT_INFO"); if (bundleList == null || bundleList.isEmpty()) { Log.d(TAG, "Export failed but RESULT_INFO is empty or missing."); Toast.makeText(context, "Export Failed: Unknown Error", Toast.LENGTH_LONG).show(); return; } StringBuilder resultInfo = new StringBuilder(); for (Bundle resultBundle : bundleList) { for (String key : resultBundle.keySet()) { String value = resultBundle.getString(key); resultInfo.append(key).append(": ").append(value).append("\n"); // Show error details in toast if RESULT_CODE_INFO exists if ("RESULT_CODE_INFO".equalsIgnoreCase(key)) { String errorCode = resultBundle.getString("RESULT_CODE"); Toast.makeText(context, "Export Failed: (Error Code: " + errorCode + ")", Toast.LENGTH_LONG).show(); } } } Log.d(TAG, "Export Failed Details: " + resultInfo.toString()); } };
関連項目:
インテント | Android 開発者
インテントおよびインテント フィルタ | Android 開発者
Android インテント | チュートリアル