所以,我正在尝试将ID参数附加到URI的末尾,当用户点击列表中的项目时,该URI将被发送到该URI。我的代码如下:
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 Developer Tutorial不是很有帮助。
答案 0 :(得分:1)
Uri构建器以不同于查询参数的方式处理基本URI,但您已将它们组合在此字符串中:
"http://www.cs.auckland.ac.nz/our_staff/vcard.php?upi="
我认为您应该做的是将?upi=
从字符串文字中删除,然后使用upi
方法附加pden001
参数和appendQueryParameter()
值:
//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);