2012-03-09 3 views
0

Я пытаюсь отправить SMS, когда уровень заряда батареи достиг определенного значения от Service. Я не получаю никаких ошибок, но SMS не отправлен.Android Отправка SMS с сервиса?

МОЙ КОД:

  import android.app.Service; 
      import android.content.BroadcastReceiver; 
      import android.content.Context; 
      import android.content.Intent; 
      import android.content.IntentFilter; 
      import android.os.BatteryManager; 
      import android.os.IBinder; 
      import android.telephony.SmsManager; 
      import android.util.Log; 
      import android.widget.Toast; 


      public class BatteryStatus extends Service { 
     int scale = -1; 
      int level = -1; 
      int voltage = -1; 
      int temp = -1; 
      String batteryNumber = ""; 
      String moderate=" Battery Level is 50 "; 
      String low = "Battery Level is low. Need to be charged immediately"; 


     public IBinder onBind(Intent intent) { 
     return null; 
     } 

     public void onCreate() { 
     super.onCreate(); 

     Toast.makeText(getApplicationContext(),"Service Running", Toast.LENGTH_SHORT).show(); 
     //BATTERY STATUS 
     BroadcastReceiver batteryReceiver = new BroadcastReceiver() { 

      @Override 
      public void onReceive(Context context, Intent intent) { 
       level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
       scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); 
       temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1); 
       voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1); 
       Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage); 
       Log.e("NumberBattery ", "Number is "+batteryNumber); 
      } 
     }; 

     IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
     registerReceiver(batteryReceiver, filter); 
     if(batteryNumber!=null && level==49){ 

       SmsManager bat = SmsManager.getDefault(); 
       bat.sendTextMessage(batteryNumber,null,moderate,null,null); 
     }else if(batteryNumber!=null && level==20){ 
       SmsManager bat = SmsManager.getDefault(); 
       bat.sendTextMessage(batteryNumber, null,low, null, null); 
      } 

     } 




      } 

LogCat:

   03-09 03:41:40.390: E/BatteryManager(11086): level is 49/100, temp is 321, voltage is 7574 
      03-09 03:41:40.390: E/NumberBattery(11086): Number is

Можете ли вы сказать, что это неправильно ее?

+0

лол, вы не понимаете свой собственный код ... 'если (batteryNumber = NULL && уровень == 49!)' Вызывается только один раз в OnCreate – Selvin

+0

код, который отправляет sms, должен быть внутри вашего BroadcastReceiver, например где вы печатаете журнал. – zapl

ответ

1

Это потому, что вы никогда не отправляете SMS.

Когда следующая строка выполняется:

if (batteryNumber != null && level == 49){ 

level еще не инициализирован.

Изменить код так:

@Override 
public void onReceive(Context context, Intent intent) { 
    level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
    scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); 
    temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1); 
    voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1); 
    Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage); 
    Log.e("NumberBattery ", "Number is "+batteryNumber); 
    if (batteryNumber != null && level == 49) { 
     SmsManager bat = SmsManager.getDefault(); 
     bat.sendTextMessage(batteryNumber,null,moderate,null,null); 
    } else if(batteryNumber!=null && level==20){ 
     SmsManager bat = SmsManager.getDefault(); 
     bat.sendTextMessage(batteryNumber, null,low, null, null); 
    } 
} 
+0

спасибо u .. :) .. сработано. – crtn

+0

Добро пожаловать в stackoverflow, пожалуйста, также проверьте это: http://meta.stackexchange.com/a/5235/172216 – Caner

Смежные вопросы