1

私は、常にバックグラウンドで実行され、ユーザーの操作なしでSMS文字列に自動的に応答するAndroid携帯用の監視アプリケーションの開発に取り組んでいますアクティビティでバッテリーレベルとGPS座標を正常に取得しましたが、これらの値をアクティビティからbroadcastreceiverに渡し、これらを自動送信することはできませんSMS 文字列への返信としての値。

アクティビティ クラスからブロードキャストレシーバー クラスに値を渡すコードを次に示します。

String info = "Battery Level: " + level + "%\n";
            setBatteryLevelText(info);

            Intent in = new Intent("my.action.string");
            in.putExtra("stat", info);
            startActivity(in);
            sendBroadcast(in);

BroadcastReceiver クラスのコード:

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
String batt = getIntent().getStringExtra("stat");
if (bundle != null)
{
  //---retrieve the SMS message received---
  Object[] pdus = (Object[]) bundle.get("pdus");
  msgs = new SmsMessage[pdus.length];            
  for (int i=0; i<msgs.length; i++){
      msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
      str += "SMS from " + msgs[i].getOriginatingAddress();                    
      str2=msgs[i].getOriginatingAddress();
      str += " :";
      str += msgs[i].getMessageBody().toString();
      str += "\n";      

    //---display the new SMS message---
      Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
    //  int number=Integer.parseInt(str2);
      SmsManager sms = SmsManager.getDefault();

      String autoReplybat = "Battery";
      boolean isAutoReplybat = msgs[i].getMessageBody().toString().equals(autoReplybat);
      if (!isAutoReplybat) {

          sms.sendTextMessage(str2, null,  batt, pi, null);
          }

GPS 座標に関する同じ問題 (データ タイプが 2 倍) GPS 座標とバッテリー レベルを自動応答できません。私の側からは、空のメッセージが SMS 文字列に対して自動的に送信されます。問題は、アクティビティからブロードキャストレシーバーに値を渡すことにあると思います。親切に助けて、論理/構文エラーを修正してください よろしくお願いします

4

3 に答える 3

0

これを試して

 String batt = intent.getStringExtra("stat")
于 2013-03-06T15:20:30.463 に答える
0

onReceive 関数に渡されたインテント変数を使用する必要があるときに、getIntent() を呼び出してエクストラを取得しています。

編集:

レシーバーの上部には次のものがあります。

   @Override
   public void onReceive(Context context, Intent intent) {
       // TODO Auto-generated method stub
          String batt = getIntent().getStringExtra("stat");

これを次のように変更します。

   @Override
   public void onReceive(Context context, Intent intent) {
       // TODO Auto-generated method stub
          String batt = intent.getStringExtra("stat");
于 2013-03-06T15:20:46.937 に答える