我是通过意图将一些数据从Web应用程序传递到打印机,但是,每次运行getQueryParameterNames时,它总是只返回一个值。
java代码是
protected void dispatch(Intent intent) {
try {
Uri link = intent.getData();
if (link != null && link.getScheme().equals("parkit") && link.getHost().equals("print")) {
Intent backgroundIntent = new Intent(this, Background.class);
Uri uri= Uri.parse(intent.getDataString());
/**
* Extract the properties from the inbound intent and send them over as meta to the background service
*/
Set<String> parameters = uri.getQueryParameterNames();
//Start filling the treemap with the data if catagories is not empty
if (!parameters.isEmpty()) {
for (String parameter : parameters) {
backgroundIntent.putExtra(parameter, intent.getData().getQueryParameter(parameter));
}
}
startService(backgroundIntent);
}
} catch (Exception e) {
System.out.println(e);
}
}
我正在运行的意图如下:
./ adb shell am start -a android.intent.action.VIEW -d “测试://打印条形码= ABCDEFG&安培;参考= FASF”
我应该看到参数的大小为2,但我只看到大小为1的值。
任何想法
答案 0 :(得分:0)
在if条件的以下片段中
if (!parameters.isEmpty()) {
for (String parameter : parameters) {
backgroundIntent.putExtra(parameter, intent.getData().getQueryParameter(parameter));
}
}
在backgroundIntent.putExtra(parameter, intent.getData().getQueryParameter(parameter));
中,parameter
键的值每次都被覆盖,因此您只能获得最后一次写入的值。