2016-05-30 3 views
-4

でSMSを返信私は現在、私は自動onReceive

public class IncomingSMSReceiver extends BroadcastReceiver { 
private String senderNumber; 

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); 
    SmsMessage[] msgs = null; 

    String message = ""; 

    if (bundle != null) { 
     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]); 
      message = msgs[i].getMessageBody(); 
      senderNumber = msgs[i].getOriginatingAddress(); 
     } 
     senderNumber = msgs[0].getOriginatingAddress(); 

     Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 
     sendMessage(senderNumber, "Thank you for sending me a message"); 
    } 
} 

OnReceiveである使用する方法を持っていると私は、このクラスでは、このメソッドを使用したいが、私は、括弧内に何を入れて確認していませんメソッドを呼び出すとき。

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 


private GoogleMap mMap; 
IncomingSMSReceiver receiver = new IncomingSMSReceiver(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    receiver.onReceive(); 

誰かが私にonReceive()括弧に入れるべきことを教えてくれますか?

EDIT

私はあなたが言った、私のコードを変更するもの、私はまたActivityMapsでonReceiveを呼び出していませんでしたでした。だからここに私のコードですが、 "更新" SMSが私に送られるとき、それはまだ "テスト" SMSで返事をしません。

public class IncomingSMSReceiver extends BroadcastReceiver { 
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 


@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(SMS_RECEIVED)) { 
     Bundle bundle = intent.getExtras(); 
     if (bundle != null) { 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      if (pdus.length == 0) { 
       return; 
      } 
      SmsMessage[] messages = new SmsMessage[pdus.length]; 
      StringBuilder sb = new StringBuilder(); 
      for (int i = 0; i < pdus.length; i++) { 
       messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       sb.append(messages[i].getMessageBody()); 
      } 
      String sender = messages[0].getOriginatingAddress(); 
      String message = sb.toString(); 
      String txtSMS="Testing"; 
      if (message.startsWith("UPDATE")) 
      { 

       Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 

       this.abortBroadcast(); 
       SmsManager smsManager = SmsManager.getDefault(); 
       smsManager.sendTextMessage(sender, null, txtSMS, null, null); 

      } 

     } 
    } 
} 

私のマニフェストファイル

receiver android:name=".IncomingSMSReceiver"> 
    <intent-filter android:priority="1000"> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
     <action android:name="PACKAGE_NAME.android.action.broadcast"/> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> 
    </intent-filter> 
+0

あなたは通常、直接 'BroadcastReceiver'の' onReceive() 'メソッドを呼び出すことはありません、あなたは確かにSMSでそれをしたくありません。あなたは何をしようとしていますか?入ってくるメッセージをキャッチしたいだけですか? –

+0

特定のフレーズが別のSMSと言われたときに私のアプリが返信するようにしたい –

+0

何か間違っていますか?簡単な質問をしているだけで、なぜ人々は下降していますか? –

答えて

0

あなたのマニフェストファイルを更新するようにしてください:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

<!-- inside your application tag --> 
<receiver android:name=".IncomingSMSReceiver"> 
    <intent-filter android:priority="2147483647" > 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 
+0

onCreate()の下でonReceiveを呼び出すが、receiver.OnReceive()の角括弧に何を入れるべきか分からない。 –

+0

私はあなたがそれをさらに理解するためにonReceiveに関するドキュメントを読むべきだと思います。あなたの質問は不確実になっています。 https://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive – mgcaguioa

+0

もっと詳しく説明します。私はMapsActivityクラスのonReceiveメソッドを呼び出す必要があります。onReceiveは実際にIncomingSMSReceiverクラスにありますしかし、クラスを呼び出そうとすると、receiver.onReceive()の括弧内に何を入れるべきかわからないので、私はエラーが出ます。上記のコードをonCreateの形式で使用します。私はそれを空白のままにすることはできませんし、私が入れた何かがエラーを生成します –

関連する問題