2013-05-26 146 views
1

所以,我試圖追加一個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開發者教程並不是很有幫助。

+0

嘗試'b.appendPath(items.get(POS));'而不是'b.appendEncod edPath(items.get(pos));' – bakriOnFire

+0

是的,我試過appendPath,結果相同 – misaochan

回答

1

的URI建設者從查詢處理基本URI參數不同,但你在這個字符串將它們結合在一起:

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

我認爲你應該做的是讓?upi=了你的字符串文字,然後追加你的upi參數,並使用appendQueryParameter()方法pden001值:

//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); 
+0

謝謝!完美的作品。現在想出如何解析vcard .. :) – misaochan