0

バーコード スキャナー ライブラリを使用する Android アプリがあります。スキャンが完了した後に呼び出されるアクティビティを作成するまで、すべてがうまく機能しています。

そのアクティビティは、次の JSON 配列を使用します。

<?php
$barCodes = array(
array(
    "id" => 123456,
    "format" => "upc_1"
),
array(
    "id" => 39123439,
    "format" => "upc_2"
),
array(
    "id" => 12345670,
    "format" => "upc_3"
  )
);

echo json_encode($barCodes); ?>

この JSONArray を解析するコードは次のとおりです。

   String scanResult;

   Intent intent = getIntent();
   scanResult = intent.getStringExtra("result");


HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://someAddress.php");


  try {

   HttpResponse response = httpclient.execute(httppost);
   String jsonResult = inputStreamToString(response.getEntity().getContent()).toString();


   JSONObject object = new JSONObject(jsonResult);

   JSONArray jArray = object.getJSONArray("barCodes");

   JSONObject json_data;
   int id ;
   String format ;
   String ret_format[] = new String[jArray.length()];
   int ret_id[] = new int[jArray.length()];

   for(int i=0;i<jArray.length();i++){
        json_data = jArray.getJSONObject(i);

        id =    json_data.getInt("id");
        format = json_data.getString("format");

        ret_id[i] = id;
        ret_format[i] = format;
       }


      int scanInt = Integer.parseInt(scanResult);

      switch(scanInt) {

      case 123456:
          textView.setText(ret_id[0] + " - " + ret_format[0]);  
      break;

      case 39123439:
          textView.setText(ret_id[1] + " - " + ret_format[1]);  
      break;

      case 12345670:
          textView.setText(ret_id[2] + " - " + ret_format[2]);  
      break;

      default:
          textView.setText("Result doesn't match the codes available...");
      break;

      }

  } 
  catch (JSONException e) {
   e.printStackTrace();
  } 
  catch (ClientProtocolException e) {
   e.printStackTrace();
  } 
  catch (IOException e) {
   e.printStackTrace();
  }

}

private StringBuilder inputStreamToString(InputStream is) {
        String rLine = "";
        StringBuilder answer = new StringBuilder();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));

        try {
         while ((rLine = rd.readLine()) != null) {
          answer.append(rLine);
           }
        }

        catch (IOException e) {
            e.printStackTrace();
         }
        return answer;
       }

アプリはエラーなしで動作していますが、switch ステートメントからの結果は表示されません。どこに問題があるのか​​わからない。ここに同じ問題を抱えている人がいるかもしれないので、助けてください。

ありがとう。

4

1 に答える 1