2017-05-11 18 views
0

エミュレータでSMSを受信しようとしています。そして、このコードは、アンドロイドAPIによって与えられたほぼ基本的なコードです。 createFromPdu((byte[]) objs[i], format);コードにエラーがあり、SmsMessageのエラーメッセージcreateFromPdu(byte[])(byte[], java.lang.String)には適用できません。 は、その後、私はそれを検索し、createFromPdu(byte[] pdu)誰かがこの問題で私を助けることができる非推奨とcreateFromPdu(byte[] pdu, String format)は23 上で利用可能である。しかし、私のcompilesdkversionが25 であっても、それはエラーを持っているのですか?あなたは、API 25に対してコンパイルされていますが、API 22をターゲットしているあなたのGradleモジュールで廃止予定のcreateFromPduのエラー

public class SmsReceiver extends BroadcastReceiver { 
    public static final String TAG = "SmsReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO: This method is called when the BroadcastReceiver is receiving 
     // an Intent broadcast. 

     Log.i(TAG, "onReceive() method called."); 

     Bundle bundle = intent.getExtras(); 
     SmsMessage[] messages; 
     messages = parseSmsMessage(bundle); 

     if(messages != null && messages.length > 0) { 
      String sender = messages[0].getOriginatingAddress(); 
      Log.i(TAG, "SMS sender : " + sender); 

      String contents = messages[0].getMessageBody().toString(); 
      Log.i(TAG, "SMS contents : " + contents); 

      Date receivedDate = new Date(messages[0].getTimestampMillis()); 
      Log.i(TAG, "SMS received date : " + receivedDate.toString()); 
     } 
    } 

    private SmsMessage[] parseSmsMessage(Bundle bundle) { 

     Object[] objs = (Object[]) bundle.get("pdus"); 
     SmsMessage[] messages = new SmsMessage[objs.length]; 



     int smsCount = objs.length; 
     for (int i = 0; i < smsCount; i++) { 
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // over API 23 
       String format = bundle.getString("format"); 
       messages[i] = SmsMessage.createFromPdu(**(byte[]) objs[i], format**); 
      } else { 
       messages[i] = SmsMessage.createFromPdu((byte[]) objs[i]); 
      } 
     } 
     return messages; 
    } 
} 
+0

Android Studioのこの種のエラーは、予想されるパラメータの種類と見つかったパラメータの種類を表示します。パラメータの型にミスマッチがある可能性が非常に高いです。 – Juan

+0

いいえ、しかし、私はAndroid APIで第2のパラメータがStringであることを確認しました。 だから私は、パラメータの種類が一致していないと思います。 –

+0

私はparseSmsMessage()を私のプロジェクトに貼り付けましたが、私はエラーを受け取りません。あなたはgradleモジュールファイル(ussuallyアプリケーションモジュール)を投稿できますか? OK – Juan

答えて

0

、あなたが25にごtagetを変更する場合は、あなたのエラーが離れて行く必要があります。

+0

私は試して同期しましたが、まだエラーがあります。 –

+0

私はこのメソッドを私のプロジェクトに貼り付けましたが、エラーは表示されません。唯一の違いは、StackOverflowでテキストを太字にするときに追加された "**"を削除したことです。 – Juan

関連する問題