1

I am trying to send sms from my android app but getting the error. i am using AsyncTask class and the code which put in doInBackground method it gives an error.

PLEASE HELP ME I HAVE PURCHASED THE SMS SERVICE BUT I AM NOT BEING ABLE TO MAKE CALL OF SERVICE.

SendFeedback class

private class SendfeedbackJob extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String[] params) {
        // do above Server call here

        try {
            // Construct data
            String apiKey = "apikey=" + "--MY API KEY--";
            String message = "&message=" + "New order by "+ userName+" 
            and dilivery "+userAddress;
            String sender = "&sender=" + "TXTLCL";
            String numbers = "&numbers=" + "91 CONTACT NO.";

            // Send data
            HttpURLConnection conn = (HttpURLConnection) new 
            URL("https://api.textlocal.in/send/?").openConnection();
            String data = apiKey + numbers + message + sender;
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Length", 
            Integer.toString(data.length()));
            conn.getOutputStream().write(data.getBytes("UTF-8"));
            final BufferedReader rd = new BufferedReader(new 
            InputStreamReader(conn.getInputStream()));
            final StringBuffer stringBuffer = new StringBuffer();
            String line;
            while ((line = rd.readLine()) != null) {
                stringBuffer.append(line);
            }
            rd.close();

            //return stringBuffer.toString();




            Toast.makeText(getContext(),stringBuffer.toString(),
            Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            System.out.println("Error SMS "+e);
            //return "Error "+e;
            Toast.makeText(getContext(),"Error 
            "+e.toString(),Toast.LENGTH_LONG).show();
        }
        return "some message";
    }

    @Override
    protected void onPostExecute(String message) {
        //process message

    }
}

Oncreate method

SendfeedbackJob job = new SendfeedbackJob();
job.execute();

I am getting this Error

'E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
              Process: com.agssoftech.shlokenterprise, PID: 12204
              java.lang.RuntimeException: An error occurred while executing 
doInBackground()
                  at android.os.AsyncTask$3.done(AsyncTask.java:325)
                  at 
java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                  at 
java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                  at 
java.util.concurrent.FutureTask.run(FutureTask.java:242)
                  at 
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
                  at 

java.util.concurrent.ThreadPoolExecutor.runWorker
(ThreadPoolExecutor.java:1133)
                  at 
java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:607)
                  at java.lang.Thread.run(Thread.java:761)
               Caused by: java.lang.RuntimeException: Cant create handler 
inside thread that has not called Looper.prepare()
                  at android.os.Handler.<init>(Handler.java:208)
                  at android.os.Handler.<init>(Handler.java:122)
                  at android.widget.Toast$TN$2.<init>(Toast.java:341)
                  at android.widget.Toast$TN.<init>(Toast.java:341)
                  at android.widget.Toast.<init>(Toast.java:108)
                  at android.widget.Toast.makeText(Toast.java:261)
                  at com.agssoftech.shlokenterprise.Fragments
.PlaceOrderFragment$SendfeedbackJob.doInBackground
(PlaceOrderFragment.java:224)
                  at 
com.agssoftech.shlokenterprise.Fragments
.PlaceOrderFragment$SendfeedbackJob.doInBackground
(PlaceOrderFragment.java:190)
                  at android.os.AsyncTask$2.call(AsyncTask.java:305)
                  at 
java.util.concurrent.FutureTask.run(FutureTask.java:237)
                  at 
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                  at 
java.util.concurrent.ThreadPoolExecutor.runWorker
(ThreadPoolExecutor.java:1133) 
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run
ThreadPoolExecutor.java:607) 
                  at java.lang.Thread.run(Thread.java:761) 

1 Answer 1

1

You can't call Toast.makeText() from the doInBackground method as it is not running on the UI thread. Move your calls to Toast.makeText() to the onPostExecute method, which runs on the UI thread.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.