SET_DISABLED_APP_LIST
DataWedge 6.5 で導入。
DataWedge の使用を禁止されたアプリやアクティビティのリストである無効アプリ リストに対して、項目を追加、削除、または更新するために使用します。ネストされたバンドルを含みます。この API をアプリで使用すれば、DataWedge をそのアプリ自体でも使用できないようにすることができます。
あるアプリが無効アプリ リストにリストされ、そのアプリが、インポートされているプロファイルの関連付けられたアプリである場合、インポートは有効にならず、アプリは無効アプリ リストに残ります。
関数プロトタイプ
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_DISABLED_APP_LIST", "<bundle>");
パラメータ
ACTION [String]: "com.symbol.datawedge.api.ACTION"
EXTRA_DATA [Bundle]: "com.symbol.datawedge.api.SET_DISABLED_APP_LIST"
メイン バンドル
メイン バンドル DISABLED_APP_LIST
には、次のプロパティが含まれています。
CONFIG_MODE [String]:
- UPDATE: 指定したパッケージやアクティビティを既存のリストに追加します
- REMOVE: 指定したパッケージやアクティビティを既存のリストから削除します
- OVERWRITE: 既存のリストを指定されたリストに置き換えます。アプリが指定されていない場合は、既存のリストを消去します。
APP_LIST [Bundle array]:
- APP_LIST [0]:
- PACKAGE_NAME [String]: アプリのパッケージ名。必須フィールドで、ワイルドカード (*) はサポートされていません。
- ACTIVITY_LIST [Array of strings]: パッケージ全体を示すには、空白のままにするか、ワイルドカード (*) を使用します。
メイン バンドル
APP_LIST [0]:
- PACKAGE_NAME ["com.symbol.emdk.notificationsample1"]
- ACTIVITY_LIST [“com.symbol.emdk.barcodesample1.MainActivity” ,”com.symbol.emdk.barcodesample1.ResultsActivity”]
上記のシナリオの場合 ...
UPDATE モードでは、指定したパッケージ名が無効アプリ リストにすでに存在する場合は、指定したアクティビティが、そのパッケージに以前指定したアクティビティに追加されます。そうでない場合は、パッケージと指定されたアクティビティが追加されます。
REMOVE モードでは、指定したパッケージ名が無効アプリ リストに存在する場合は、それが削除されます。それ以外の場合は、
INVALID_PARAMETER
エラーが返されます。
APP_LIST [1]:
- PACKAGE_NAME [String]: "com.symbol.emdk.notificationsample1"
- ACTIVITY_LIST [“*”]
上記のシナリオの場合 ...
- UPDATE モードでは、DataWedge は、指定したパッケージのすべてのアクティビティに対して無効になります。
- REMOVE モードでは、指定したパッケージが無効リストから削除され、ワイルドカード文字は無視されます。ワイルドカード文字は、パッケージ名またはアクティビティ名の従属文字列とは見なされません。1 つ以上の個別のアクティビティを削除するには、パッケージ名全体と、削除するアクティビティを指定します。
APP_LIST [2]:
- PACKAGE_NAME: "com.symbol.emdk.notificationsample1"
上記のシナリオの場合 ...
- UPDATE モードでは、DataWedge は、指定したパッケージのすべてのアクティビティに対して無効になります。
- REMOVE モードでは、指定したパッケージが無効リストから削除されます (アプリで DataWedge を使用できる場合)。
重要: APP_LIST のバンドル エクストラは、UPDATE および REMOVE の構成モードを使用するときにのみ必要です。OVERWRITE モードを使用しているときに APP_LIST が空白のままになっている場合は、既存の無効アプリ リストが削除されます。
結果コード
DataWedge は、アプリにインテント エクストラ (SEND_RESULT
および COMMAND_IDENTIFIER
) が含まれている場合、次のエラー コードを返し、DataWedge の結果インテント メカニズムを使用してアプリで結果を取得できるようにします。以下の例を参照してください。
- PARAMETER_INVALID - CONFIG_MODE が定義されていないか、文字列の値が無効です。モードが UPDATE または REMOVE に設定されており、APP_LIST が指定されていない場合にも返されます。
- INVALID PACKAGE OR ACTIVITY - パッケージ名またはアクティビティ名に無効な文字が含まれています
- APP_ALREADY_IN_DISABLED_LIST - パッケージまたはアクティビティがすでに無効アプリ リストにあります
- APP_ALREADY_ASSOCIATED - アクティビティがアプリに関連付けられています
- APP_NOT_IN_DISABLED_LIST - パッケージもアクティビティも無効アプリ リストにありません
詳細については、結果コード ガイドも参照してください。
例
以下のコードでは、DataWedge の無効アプリ リストにアプリを追加するインテントを送信します。切り替えの結果を検証する (またはエラーが予想される場合) には、インテント エクストラの SEND_RESULT
および COMMAND_IDENTIFIER
を包含して、結果を取得します (これも示されています)。
Bundle bMain = new Bundle();
bMain.putString("CONFIG_MODE","UPDATE");
Bundle bundleApp1 = new Bundle();
bundleApp1.putString("PACKAGE_NAME","com.android.calculator2");
bundleApp1.putStringArray("ACTIVITY_LIST", new String[]{
"com.android.calculator2.Calculator",
"com.android.calculator2.Licenses"});
Bundle bundleApp2 = new Bundle();
bundleApp2.putString("PACKAGE_NAME","com.android.phone");
bundleApp2.putStringArray("ACTIVITY_LIST", new String[]{
"com.android.phone.EmargencyDialer",
"com.android.phone.ADNList",
"com.android.phone.Settings"});
Bundle bundleApp3 = new Bundle();
bundleApp3.putString("PACKAGE_NAME","com.android.email");
bundleApp3.putStringArray("ACTIVITY_LIST", new String[]{"*"});
Bundle bundleApp4 = new Bundle();
bundleApp4.putString("PACKAGE_NAME","com.symbol.myzebraapp");
bMain.putParcelableArray("APP_LIST", new Bundle[]{
bundleApp1
,bundleApp2
,bundleApp3
,bundleApp4
});
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_DISABLED_APP_LIST", bMain);
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 インテント | チュートリアル