我目前正在開發一個1.6版的android應用程序,它解析從服務器接收到的json文件,然後在列表視圖中顯示結果。到目前爲止,我的所有測試版測試人員除了擁有在Android 2.2上運行的HTC G2之外,沒有任何問題。他說他沒有看到他的listview中的任何內容,這讓我認爲json的檢索或解析存在一些問題。他還表示,他在運行應用程序時沒有任何互聯網問題。即使我的「刷新」選項也不能解決他的問題。我想知道是否有什麼特別的G2會導致這個問題。這裏是我處理JSON的代碼。G2和json解析
首先我使用OAuth的客戶端來獲取文件
OAuthMessage request = accessor.newRequestMessage(method, url, parameters);
response = client.invoke(request, OAuthClient.ParameterStyle.BODY);
if (("application/json; charset=utf-8").equals(response.getBodyType())) {
return response.readBodyAsString();
我也顯示舉杯,如果有一個與JSON獲取
if (result instanceof Exception) {
// If failed during refreshing vouchers, show message to user
if (USER_REFRESH.equals(flag) || SYSTEM_REFRESH.equals(flag)) {
((ListVouchers)context).getProgressDialog().cancel();
Toast.makeText(context, "Could not load. Try again later.", Toast.LENGTH_LONG).show();
}
然後我存儲從JSON信息成爲一個問題一個數據庫:
JSONArray jArray = new JSONArray(params[0]);
int jarrayLength = jArray.length();
//Create a set of the ids in the json
for (int i = 0; i < jarrayLength; i++) {
JSONObject jsonObj = jArray.getJSONObject(i);
JSONObject categoryObj = jsonObj.getJSONObject("category");
values.put("categoryName", categoryObj.getString("name"));
values.put("categoryId", categoryObj.getString("id")); }
contentResolver.insert(CONTENT_URI, values);
有沒有人有任何想法,爲什麼G2特別是不會這樣做是否正確?用戶報告沒有崩潰,只是他看到我的空視圖,其中應該有來自json的信息。我認爲唯一的問題會造成這個缺點,但我認爲用戶的手機不能存儲幾kb的json文本。我已經完成了他的帳戶的管理員登錄,並且在我用於測試的手機上工作正常。
編輯:
我曾問一個logcat的用戶,似乎從這個錯誤的問題源於:
org.json.JSONException: Value other of type java.lang.String cannot be converted to JSONArray
這發生在這條線,其中PARAMS [0]從結果服務器:
JSONArray jArray = new JSONArray(params[0]);
這可能與處理文本文件的某些手機有所不同嗎?看來,結果沒有被檢測爲JSON文件
你需要讓自己成爲G2並嘗試一下。如果沒有設備和調試,你會在頭腦中繼續拍攝你自己的東西,因此可能會出現很多錯誤。 –
我在想這可能是找出答案的唯一方法。感謝您的迴應。 –
獲得logcat後,我認爲它不僅與G2特別有關,而且似乎是硬件問題。 –