SET_DEFAULT_PROFILE
指定したプロファイルをデフォルトプロファイルとして設定するために使用します。指定されたプロファイルは、別のアプリケーションに関連付けられていない必要があります。プロファイルは多くのアプリケーションに関連付けることができますが、1 つのアプリケーションを複数のプロファイルに関連付けることはできません。
デフォルト プロファイルについて
Profile0 は、DataWedge に関連付けられていない、フォアグラウンドのすべてのアプリに対して自動的に有効になる汎用プロファイルです。
Profile0 のすべてのパラメータは、関連付けを除いて編集できます。つまり、DataWedge で Profile0 の入力、処理、および出力の設定を操作できますが、フォアグラウンド アプリケーションを割り当てることはできません。そのため、フォアグラウンドの関連付けられていないアプリには DataWedge から直接出力できます。
Profile0 を無効にすると、ユーザー定義プロファイルに関連付けられているアプリケーションにのみ出力データを送信できるようになります。たとえば、特定のアプリケーションを関連付けるプロファイルを作成し、Profile0 を無効にしてからスキャンします。すると、ユーザーが作成したプロファイルで指定したアプリケーションにのみデータが送信されます。これにより、DataWedge に追加のセキュリティ レイヤが設定され、指定したアプリケーションにのみデータを送信できるようになります。
使用方法
起動プログラム アプリケーションに、ユーザーが起動できるアプリのリストがあり、DataWedge プロファイルに 1 つも関連付けられていない場合は、setDefaultProfile
メソッドを使用して、ユーザーが選択した任意のアプリにプロファイルを関連付けることができます (それ以外の場合は Profile0 を使用します)。ユーザーが選択したアプリを起動すると、DataWedge の自動プロファイル切り替えによって、新たに指定したプロファイルに切り替わります。
起動したアプリケーションにすでに DataWedge プロファイルが関連付けられている場合、setDefaultProfile
メソッドの呼び出しは無視され、以前指定したプロファイルがロードされます。起動プログラム アプリケーションに制御が戻ると、resetDefaultProfile
を使用して、デフォルト プロファイルをリセットできます。
関数プロトタイプ
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();
};
コメント
指定したプロファイルが存在しない場合、または指定したプロファイルがすでにアプリケーションに関連付けられている場合、API コマンドは作用しません。アクティビティが一時停止すると、プロファイルは自動的に切り替わります。そのため、アクティビティの onResume メソッドから、この API 関数を呼び出すことをお勧めします。
このプロファイルを作成することですべてのアプリケーション/アクティビティの要求を満たせるようにし、要求を満たせない場合は、Profile0 をデフォルトに設定することをお勧めします。これにより、こうしたアプリケーション/アクティビティが、誤ってスキャナ デバイス構成を切り替えることがなくなります。たとえば、Profile0 がデフォルトのプロファイルであり、カメラをバーコード スキャナとして使用するように構成されているとします。カメラを使用してバーコードをスキャンするのにブラウザ アプリケーションのみを使用する場合は、常にカメラでスキャンされ、取得したデータは予定どおりにブラウザに入力されます。しかし、バーコード スキャナとしてブロックバスタを使用するプロファイルに切り替えるアプリケーションを後で起動した場合、デフォルト プロファイルを使用するように設定されているブラウザ アプリケーションは、次回使用時にブロックバスタを使用するように、予定外の再構成が行われます。このシナリオで、ブラウザがカメラをバーコード スキャナとして確実に使用し続けるようにするためには、カメラをバーコード スキャナとして指定するプロファイルを作成し、それをブラウザに関連付けるだけです。
関連項目:
Zebra Support Central | インテグレータ ガイド、製品マニュアル、ソフトウェア ダウンロードおよびサポート
LaunchPad | Zebra 開発者コミュニティ
インテント | Android 開発者
インテントおよびインテント フィルタ | Android 開発者
Android インテント | チュートリアル