Reputation: 77
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)
Upvotes: 1
Views: 29
Reputation: 8629
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.
Upvotes: 1