2012-03-09 4 views
0

배터리 레벨이 Service에서 특정 값에 도달하면 SMS을 보내려고합니다. 어떤 오류도 발생하지 않지만 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); 
      } 

     } 




      } 

는 로그 캣 :

   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

감사합니다 .. .. :) 근무했습니다. – crtn

+0

stackoverflow에 오신 것을 환영합니다. http://meta.stackexchange.com/a/5235/172216 – Caner

관련 문제