У меня есть два класса, MainActivity и SMSMonitorService.Отправить onPostExecute() result to Service
В классе MainActivity я реализую AsyncTask.
В классе SMSMonitorService у меня есть метод senReplySMS с двумя параметрами: String number и String responseText.
Я хочу отправить результат onPostExecute() в качестве параметра sendReplySMS (responseText).
MainActiviy.class
public class MainActivity extends ActionBarActivity {
/*.
. Code
.
*/
public class DownloadWebpageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
// params comes from the execute() call: params[0] is the url.
try {
return downloadUrl(urls[0]);
} catch (IOException e) {
return "Unable to retrieve web page. URL may be invalid.";
}
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
//Extract String between two delimiters.
String finalResult = StringUtils.substringBetween(result, "extract\":\"", "\"}}}}");
String finalResponse = StringEscapeUtils.unescapeJava(finalResult);
textView.setText(finalResponse);
Intent intent = new Intent(MainActivity.this, SMSMonitorService.class);
intent.putExtra("onPostResult", finalResponse);
startService(intent);
}
}
SMSMonitorService.class
public void sendReplySMS(String number, String responseText) {
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, responseText, null, null);
}
public int onStartCommand (Intent intent, int flags, int startId){
String onPostReceive = intent.getStringExtra("onPostResult");
sendReplySMS(number, onPostReceive);
return START_STICKY;
}
приложение не запускается.
Как отправить строку результата onPostExecute() в качестве параметра метода sendReplySMS?
Спасибо за продвижение.
EDIT:
Исправление: при нажатии на кнопку переключения для запуска службы, я получаю силы близко.
Logcat:
12-30 00:24:33.647 10929-10929/com.textnet.apitest I/MainActivity﹕ SMSMonitor Started
12-30 00:24:33.927 10929-10929/com.textnet.apitest I/SMSMonitorService﹕ SMS Monitor service started
12-30 00:24:33.937 10929-10929/com.textnet.apitest I/SMSMonitorService﹕ Broadcast Receiver registered
12-30 00:24:33.977 10929-10929/com.textnet.apitest W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40b099f0)
12-30 00:24:34.147 10929-10929/com.textnet.apitest E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.textnet.apitest/.SMSMonitorService }: java.lang.IllegalArgumentException: Invalid destinationAddress
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2376)
at android.app.ActivityThread.access$1900(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Invalid destinationAddress
at android.telephony.SmsManager.sendTextMessage(SmsManager.java:88)
at com.textnet.apitest.SMSMonitorService.sendReplySMS(SMSMonitorService.java:31)
at com.textnet.apitest.SMSMonitorService.onStartCommand(SMSMonitorService.java:38)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2359)
at android.app.ActivityThread.access$1900(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
Что вы получаете в 'intent.getStringExtra (« onPostResult »);'? –
«Приложение не запускается» - что вы имеете в виду? – Chandrakanth
Приложение завершает работу. Извините меня за мой плохой английский. – androidBegginer