2015-03-03 12 views
-2

場景:應用程序在後臺。在接聽或撥出電話期間,我顯示了有兩個按鈕的alertview。 。 「顯示並取消」。當我點擊「顯示」按鈕時,此代碼工作。但我的應用程序崩潰。任何人都可以告訴我原因。致命例外:輸入/輸出期間的AsyncTask#2

final class sendserverhit extends AsyncTask< Void,Void, Void> 

    { 

    @Override 
    protected void onPostExecute(Void result) { 

    // TODO Auto-generated method stub 
    Toast.makeText(CallHelper.this, "status : "+status + " message : "+message+" applidation :"+application+" data1 : "+data, Toast.LENGTH_LONG).show(); 


    super.onPostExecute(result); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
    // TODO Auto-generated method stub 
      try { 
    GetText(); 
    } catch (UnsupportedEncodingException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    return null; 
    } 

    } 

這是我的getText代碼

public void GetText() throws UnsupportedEncodingException 
    { 


     // Create data variable for sent values to server 
      String data = URLEncoder.encode("client_phone", "UTF-8") 
         + "=" + URLEncoder.encode(numberin, "UTF-8"); 
      data += "&" + URLEncoder.encode("user_phone", "UTF-8") 
        + "=" + URLEncoder.encode("1001", "UTF-8"); 
      data += "&" + URLEncoder.encode("call_type", "UTF-8") 
        + "=" + URLEncoder.encode("2", "UTF-8"); 
      data += "&" + URLEncoder.encode("identity", "UTF-8") 
         + "=" + URLEncoder.encode("Null", "UTF-8"); 
      data += "&" + URLEncoder.encode("comments", "UTF-8") 
        + "=" + URLEncoder.encode("", "UTF-8"); 

      String text = ""; 
      BufferedReader reader=null; 


      // Send data 
     try 
     { 


      // Defined URL where to send data 
      URL url = new URL("http://..iescrm/push_data?"); 

     // Send POST data request 

      URLConnection conn = url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
      wr.write(data); 

      wr.flush(); 

      // Get the server response 

     reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 

     // Read Server Response 
     while((line = reader.readLine()) != null) 
      { 
        // Append server response in string 
        sb.append(line + "\n"); 
      } 


      text = sb.toString(); 


     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
     finally 
     { 
      try 
      { 

       reader.close(); 
       JSONObject jObject = new JSONObject(text); 
        status = jObject.getString("status"); 
//{"status":true,"message":"success","user_phone_number":"1001","identity":null} 
       // {"application":"SkiesCRM","status":false,"message":"Invalid identity","data":""} 
    message = jObject.getString("message"); 

        application = jObject.getString("application"); 
        data1 = jObject.getString("data"); 


      } 

      catch(Exception ex) { Toast.makeText(ctx, "status : ", Toast.LENGTH_LONG).show();} 
     } 
     // Show response on activity 

    } 

這裏是我的錯誤日誌

03-03 12:37:00.999: E/AndroidRuntime(21166): FATAL EXCEPTION: AsyncTask #2 
03-03 12:37:00.999: E/AndroidRuntime(21166): java.lang.RuntimeException: An error occured while executing doInBackground() 
03-03 12:37:00.999: E/AndroidRuntime(21166): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at java.lang.Thread.run(Thread.java:838) 
03-03 12:37:00.999: E/AndroidRuntime(21166): Caused by: java.lang.NullPointerException 
03-03 12:37:00.999: E/AndroidRuntime(21166): at libcore.net.UriCodec.encode(UriCodec.java:132) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at java.net.URLEncoder.encode(URLEncoder.java:57) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at com.bitgriff.androidcalls.CallHelper.GetText(CallHelper.java:153) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at com.bitgriff.androidcalls.CallHelper$sendserverhit.doInBackground(CallHelper.java:131) 
03-03 12:37:00.999: E/AndroidRuntime(21166): at com.bitgriff.androidcalls.CallHelper$sendserverhit.doInBackground(CallHelper.java:1) 
+1

正在崩潰的地方?它給你哪個錯誤? GetText是做什麼的? – 2015-03-03 08:08:25

+0

你的'GetText();'代碼在哪裏? – 2015-03-03 08:09:31

+0

錯誤告訴你什麼!? – 2015-03-03 08:16:37

回答

1

誤差爲NullPointerExceptionjava.net.URLEncoder.encode,因爲你編碼字符串和變量numberin,也許該變量爲空。