Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AsyncTask是一个内部类:服务中的get-onPostExecute()结果_Java_Android_Android Asynctask_Sms - Fatal编程技术网

Java AsyncTask是一个内部类:服务中的get-onPostExecute()结果

Java 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

如果我的问题与其他问题相似,请原谅,但我没有找到答案

我有两门课,MainActivity和SMSMonitorService

AsyncTask是MainActivity的内部类

我想得到onPostExecute结果并通过短信发送。方法sendReplySMS在SMSMonitorService上

MainActivity.java

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;
}