2013-06-28 2 views
-1

Мне нужно скачать демо-версию apk. Я вставляю некоторые значения в базу данных, используя php. но в какой-то момент времени он бросает ошибкуПолучение выпуска в json-анализе

org.json.JSONException: Value at validity_days of type java.lang.String cannot be converted to int 

фрагмент кода в Java:

private void upgradeVersion(String apkPath) { 

    System.out.println("SDCARD path checked5:-"+apkPath); 
    if(saveUserInfo()==true) 
    { 
     System.out.println("validity...."+validity); 

     if (apkPath != null) { 
      progressDialog.dismiss(); 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(Uri.fromFile(new File(apkPath)), 
         "application/vnd.android.package-archive"); 
      intent.putExtra("validity_days", validity); 
      startActivityForResult(intent, 1); 
      Toast.makeText(getApplicationContext(),"NetVidya ebook app has been successfully installed.", Toast.LENGTH_LONG).show(); 
     } 
    } 

и ответ PHP:

{"users":[{"status":"added","installeddate":"","active":"Y","validity_days":""}]} 

который им получить нулевой здесь вот у ошибка бросания.

можно ли обрабатывать это исключение в самом андроиде? или я должен внести некоторые изменения в php.

пожалуйста, предложите

+0

Почему вы не используете обычный метод if else –

+0

Не можете увидеть, где установлена ​​переменная 'validity'? – Tom

+0

@droidhot его просто код фрагмента настолько длинный, что вы наклеили только фрагмент. – CodingDecoding

ответ

0

Согласно Exception, размещенной выше, я думаю, вы получаете исключение в этой строке:

startActivityForResult(intent, 1); 

Просто замените эту строку с

startActivity(intent); 

и получить JSONString в другой деятельности в качестве

Intent i = getIntent(); 
String str = i.getStringExtra("validity_days"); 
+0

Зачем это исключение. Все, добавляя код результата, это дождаться возврата результата до вызова onCreate в следующем действии? – Rarw

+0

Нет, чтобы проверить, что необходимо отправить – CodingDecoding

0

Почему вы не разобрать ваш переменную validity_days в целое, прежде чем он бросает исключение ..

1

Не видя ваш JSON парсер я assuing вопрос является, потому что вы должны использовать validity_days и эту строку, по крайней мере, некоторые из время, может не иметь никакой ценности.

try{ 
    JSONObject fullString = new JSONObject(thatLongStringYouPosted); 
    JSONArray users = fullString.getJSONObject("users"); 
    String validity_days = users.getJSONObject(0),getString("validity_days"); 
    if(!validity_days.isEmpty() && validity_days != null)    
     //do whatever you want with it 
    } 
} catch (JSONException e){ 
    Log.e(TAG, e.toString()); 
} 

При разборе JSON вы получите обратно нулевое значение только в том случае, что вы ищете, не существует - то нет «validity_days» строка в ответе. В противном случае вы просто получите пустую строку. Просто проверка нулевой и/или пустой строки должна устранить вашу проблему.

Также блок catch try будет обрабатывать это excpetion в коде android. Вы можете изменить свой PHP, если хотите, чтобы вы всегда возвращали определенное значение, если оно пустое (например, вы можете всегда повторно использовать 0 вместо нуля, когда поле пустое).

Смежные вопросы