Java AsyncTask是一个内部类:服务中的get-onPostExecute()结果
如果我的问题与其他问题相似,请原谅,但我没有找到答案 我有两门课,MainActivity和SMSMonitorService AsyncTask是MainActivity的内部类 我想得到onPostExecute结果并通过短信发送。方法sendReplySMS在SMSMonitorService上 MainActivity.javaJava AsyncTask是一个内部类:服务中的get-onPostExecute()结果,java,android,android-asynctask,sms,Java,Android,Android Asynctask,Sms,如果我的问题与其他问题相似,请原谅,但我没有找到答案 我有两门课,MainActivity和SMSMonitorService AsyncTask是MainActivity的内部类 我想得到onPostExecute结果并通过短信发送。方法sendReplySMS在SMSMonitorService上 MainActivity.java public class MainActivity extends ActionBarActivity { //some code... public cl
public class MainActivity extends ActionBarActivity {
//some 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);
SMSMonitorService.sendReplySMS(SMSMonitorService.number, finalResponse); //sendReplySMS and number are declared static
}
}
短信从不发送
如何发送包含onPostExecute结果的短信
非常感谢您的帮助。
SMSMMonitorService
是一项服务,不是普通的java类,因此您需要使用startService
方法来启动发送sms的服务。按如下方式操作:
在onPostExecute
方法中准备意向,以便将所有值发送到SMSMMonitorService
:
@Override
protected void onPostExecute(String result) {
//....your code
Intent intent = new Intent(CurrentActivity.this,SMSMonitorService.class);
intent.putExtra("finalResponse", finalResponse);
startService(intent);
}
以及在SMSMMonitorService
服务使用中
@Override
public int onStartCommand( Intent intent , int flags , int startId )
{
super.onStartCommand(intent, flags , startId);
String finalResponse = intent.getStringExtra("finalResponse");
if( extras != null )
sendReplySMS(SMSMonitorService.number, finalResponse);
return START_REDELIVER_INTENT;
}
确保您已在AndroidManifest.xml
注意:使用
IntentService
而不是Service,因为IntentService在任务完成时会自动停止。有关更多信息,请参见SMSMMonitorService.number
占用的值是多少?number
是原始地址。谢谢!但是短信从不发送,我想这是因为我的手机是双卡的,我会试试单卡手机。
@Override
public int onStartCommand( Intent intent , int flags , int startId )
{
super.onStartCommand(intent, flags , startId);
String finalResponse = intent.getStringExtra("finalResponse");
if( extras != null )
sendReplySMS(SMSMonitorService.number, finalResponse);
return START_REDELIVER_INTENT;
}