Android:返回结果代码

时间:2014-08-08 07:00:57

标签: java android broadcastreceiver smsmanager

来自我的MainActivity.java的代码

public static int sendSMS(String phoneNumber,String message) {    
      SmsManager smsManager = SmsManager.getDefault();
      int result_code;

      PendingIntent sentPI = PendingIntent.getBroadcast(basecontext, 0, new Intent(SENT), 0);

      // ---when the SMS has been sent---
      basecontext.registerReceiver(new BroadcastReceiver() {
          @Override
          public void onReceive(Context arg0, Intent arg1) {                  
              switch (getResultCode()) {
              case Activity.RESULT_OK:
                  result_code = 1;                              
                  break;
              case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                  result_code = 2;                              
                  break;
              case SmsManager.RESULT_ERROR_NO_SERVICE:
                  result_code = 3;      
                  break;
              case SmsManager.RESULT_ERROR_NULL_PDU:                        
                  result_code = 4;      
                  break;
              case SmsManager.RESULT_ERROR_RADIO_OFF:
                  result_code = 5;      
                  break;
              }
          }
      }, new IntentFilter(SENT));
      smsManager.sendTextMessage(phoneNumber, null, message, sentPI, null);  
 return result_code;                
 }

但是说“不能引用在不同方法中定义的内部类中的非最终变量result_code”。 我这样做是因为我在我的AlarmReceiver类中使用它,就像这样

   public class alarmReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent arg1) {

           int i = MainActivity.sendSms("6391234123","Hello world");
           if(i==1){some codes here}
           else if(i==2){some codes here}
           ....
           ....
    }
    }

简而言之,我不知道如何在result_code中传递这些数字,并在调用方法时返回它。有什么办法吗?对不起,如果我不能问一个好问题,而且更具体,因为我是新来的,英语也不好。

1 个答案:

答案 0 :(得分:0)

当你这样做时

new BroadcastReceiver() {

您正在创建一个BradcastReceiver类。在这个类的内部,您使用的是result_code,它位于内部类之外。您需要将result_code声明为final

final int result_code;

此致

PS:作为建议,当你没有错误时标准结果代码为0,当事情进展顺利时习惯返回0会更好