来自我的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中传递这些数字,并在调用方法时返回它。有什么办法吗?对不起,如果我不能问一个好问题,而且更具体,因为我是新来的,英语也不好。
答案 0 :(得分:0)
当你这样做时
new BroadcastReceiver() {
您正在创建一个BradcastReceiver类。在这个类的内部,您使用的是result_code,它位于内部类之外。您需要将result_code声明为final
final int result_code;
此致
PS:作为建议,当你没有错误时标准结果代码为0,当事情进展顺利时习惯返回0会更好