2012-03-09 18 views
0

バッテリーレベルがServiceから特定の値に達したときにSMSを送信しようとしています。エラーは発生していませんが、SMSは送信されていません。AndroidサービスからSMSを送信しますか?

MY CODE:

  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

ありがとう.. :)働いた。 – crtn

+0

ようこそstackoverflow、またこれを確認してください:http://meta.stackexchange.com/a/5235/172216 – Caner

関連する問題