getQueryParameterNames()只返回一个参数

时间:2018-02-07 15:05:12

标签: java android android-intent

我是通过意图将一些数据从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的值。

任何想法

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键的值每次都被覆盖,因此您只能获得最后一次写入的值。