1

因此,我试图在用户单击列表中的项目时将其发送到的 URI 末尾附加一个 ID 参数。我的代码如下:

public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
    Intent i = new Intent(Intent.ACTION_VIEW);
    //items.get(pos) returns the UPI needed. Append to http://www.cs.auckland.ac.nz/our_staff/vcard.php?upi=
    Uri.Builder b = Uri.parse("http://www.cs.auckland.ac.nz/our_staff/vcard.php?upi=").buildUpon();
    b.appendEncodedPath(items.get(pos));
    Uri uri = b.build();
    i.setData(uri);
    Log.d("URL of staff", uri.toString());
    activity.startActivity(i);      
}

现在,我应该获得以下形式的 URI:

http://www.cs.auckland.ac.nz/our_staff/vcard.php?upi=pden001

例如。但是Logcat显示得到的URI其实是

http://www.cs.auckland.ac.nz/our_staff/vcard.php/pden001?upi=

为什么它附加pden001中间

我也尝试过appendPath()同样的结果,Android 开发者教程在这种情况下并不是很有帮助。

4

1 回答 1

1

Uri 构建器处理基本 URI 的方式与查询参数不同,但您已将它们组合在此字符串中:

"http://www.cs.auckland.ac.nz/our_staff/vcard.php?upi="

我认为你应该做的是离开?upi=你的字符串文字,然后使用以下方法附加你的upi参数和pden001appendQueryParameter()

  //items.get(pos) returns the UPI needed. Append to http://www.cs.auckland.ac.nz/our_staff/vcard.php
  Uri.Builder b = Uri.parse("http://www.cs.auckland.ac.nz/our_staff/vcard.php").buildUpon();
  b.appendQueryParameter("upi", items.get(pos));
  Uri uri = b.build();
  i.setData(uri);
于 2013-05-26T07:29:17.967 回答