SET_DEFAULT_PROFILE
指定したプロファイルをデフォルト プロファイルとして設定するために使用します。この API は、指定したプロファイルが存在し、かつ、いずれのアプリケーションにも関連付けられていない場合にのみ機能します。1 つのプロファイルを複数のアプリケーションに関連付けることができますが、各アプリケーションに関連付けることができるプロファイルは 1 つだけです。アクティビティが一時停止されると DataWedge の自動プロファイル切り替えが行われるため、Zebra ではアクティビティの onResume メソッドからこの API を呼び出すことを推奨しています。
意図しない設定変更を防ぐため、Zebra では、DataWedge に関連付けられておらず、何も設定しなければ Profile0 が適用されるすべてのアプリケーション/アクティビティに対応するプロファイルを作成することを推奨しています。これにより、アプリケーションが異なっても、スキャナ デバイスの設定を一貫して維持できます。
デフォルト プロファイルについて
Profile0 は、DataWedge に関連付けられていないアプリがフォアグラウンドになると、そのアプリに自動的に適用される汎用プロファイルです。Profile0 のすべてのパラメータは編集できますが、関連付けは変更できません。つまり、DataWedge は Profile0 の入力、処理、および出力の設定を変更できますが、Profile0 を特定のフォアグラウンド アプリケーションに割り当てることはできません。これにより、DataWedge に関連付けられていないアプリがフォアグラウンドでアクティブになると、DataWedge はそのアプリに出力を送信できます。
Profile0 を無効にすると、DataWedge は、ユーザー定義プロファイルに関連付けられているアプリケーションにのみ出力データを送信できるようになります。たとえば、プロファイルを作成して特定のアプリケーションに関連付け、Profile0 を無効にすることで、DataWedge は指定されたアプリケーションにのみデータを送信するようになり、セキュリティがさらに強化されます。
使用方法
ユーザーが起動できるアプリのリストを持つランチャー アプリケーションを考えてみましょう。いずれのアプリも DataWedge プロファイルに関連付けられていません。setDefaultProfile メソッドを使用して、ユーザーが選択した任意のアプリケーションにプロファイルを関連付けることができます。それ以外の場合は、Profile0 が使用されます。ユーザーが選択したアプリを起動すると、DataWedge の自動プロファイル切り替えによって、新たに指定したプロファイルに切り替わります。
起動したアプリケーションにすでに DataWedge プロファイルが関連付けられている場合、setDefaultProfile メソッドの呼び出しは無視され、以前指定したプロファイルがロードされます。ランチャー アプリケーションに制御が戻ると、resetDefaultProfile を使用して、デフォルト プロファイルをリセットできます。
別のシナリオでは、Profile0 がデフォルトプロファイルであり、カメラをバーコード スキャナとして使用するように設定されており、このセットアップに対してブラウザ アプリケーションのみが設定されている場合、DataWedge はカメラを使用してスキャンし、取得したデータをブラウザに期待どおりに入力します。しかし、別のアプリケーションが起動し、異なるスキャナーを使用するプロファイルに切り替わった場合、ブラウザ アプリケーションは、デフォルトで Profile0 を使用するため、予期せず新しいスキャナに切り替わる可能性があります。このシナリオで、ブラウザがカメラをバーコード スキャナに確実に使用し続けるようにするためには、カメラをバーコード スキャナとして指定するプロファイルを作成し、ブラウザに関連付けます。
関数プロトタイプ
Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.SET_DEFAULT_PROFILE", "<profile name>");
パラメータ
ACTION [String]: "com.symbol.datawedge.api.ACTION"
EXTRA_DATA [String]: "com.symbol.datawedge.api.SET_DEFAULT_PROFILE"
<プロファイル名>: デフォルト プロファイルとして設定するプロファイル名 (大文字と小文字を区別した文字列)。
結果コード
DataWedge は、アプリにインテント エクストラ (SEND_RESULT および COMMAND_IDENTIFIER) が含まれている場合、次のエラー コードを返し、DataWedge の結果インテント メカニズムを使用してアプリで結果を取得できるようにします。以下の例を参照してください。
- PROFILE_ALREADY_SET - エラー
- PROFILE_NOT_FOUND - エラー
- PROFILE_HAS_APP_ASSOCIATION - エラー
- PROFILE_NAME_EMPTY - エラー
詳細については、結果コード ガイドも参照してください。
コード例
// define action and data strings String setDefaultProfile = "com.symbol.datawedge.api.ACTION"; String extraData = "com.symbol.datawedge.api.SET_DEFAULT_PROFILE"; public void onResume() { // create the intent Intent i = new Intent(); // set the action to perform i.setAction(setDefaultProfile); // add additional info (a name) i.putExtra(extraData, "myProfile"); // send the intent to DataWedge this.sendBroadcast(i); }
結果コードの生成と受信
コマンドおよび構成インテント パラメータは、結果コードを送信するかどうかを決定します (デフォルトでは無効)。SEND_RESULT を使用する場合は、結果コードと元のインテントを照合するために、COMMAND_IDENTIFIER を使用します。こうしたパラメータの使用方法のサンプルを以下に示します。
注: 使用する API に合わせて、この汎用コードを変更します。
// send the intent Intent i = new Intent(); i.setAction(ACTION); i.putExtra("com.symbol.datawedge.api.CREATE_PROFILE", "Profile1"); // 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")){ bundle = intent.getBundleExtra("RESULT_INFO"); Set<String> keys = bundle.keySet(); for (String key: keys) { resultInfo += key + ": "+bundle.getString(key) + "\n"; } } String text = "Command: "+command+"\n" + "Result: " +result+"\n" + "Result Info: " +resultInfo + "\n" + "CID:"+commandidentifier; Toast.makeText(context, text, Toast.LENGTH_LONG).show(); };
関連項目:
Zebra Support Central | インテグレータ ガイド、製品マニュアル、ソフトウェア ダウンロードおよびサポート
LaunchPad | Zebra 開発者コミュニティ
インテント | Android 開発者
インテントおよびインテント フィルタ | Android 開発者
Android インテント | チュートリアル