2012-01-16 33 views
0

私は現在アンドロイドをコーディングしていますが、SMSを受信したときにアプリケーションが何らかの操作を実行したいと思っています...今、奇妙な部分...私はエミュレータで次のコードをテストしました。私はそれがすべてでは動作しませんGO SMSと私のアンドロイド2.3.3に連れて行くときには:SMSを受信する

import android.content.BroadcastReceiver; 
import android.content.Context;<br /> 
import android.content.Intent;<br /> 
import android.os.Bundle;<br /> 
import android.telephony.gsm.SmsMessage;<br /> 
import android.widget.Toast; 


public class SMSReceiver extends BroadcastReceiver { 
String lsms; 
/* package */ static final String ACTION = 
     "android.provider.Telephony.SMS_RECEIVED"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //---get the SMS message passed in---   
     Bundle bundle = intent.getExtras();     
     SmsMessage[] msgs = null;   
     String str = "";      
     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();          
       str += " :";     
       str += msgs[i].getMessageBody().toString();     
       str += "\n";      
       }    
      //---display the new SMS message---    
      Toast.makeText(context, str, Toast.LENGTH_SHORT).show();   
      } 

    } 


} 

そして、はい\ ...私はAndroidManifest.xmlを に必要なコードのアクセス許可を追加しました

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

とその意図

<receiver android:name=".receiver.SMSReceiver" android:enabled="true"> 
     <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 
+0

私は何か似たようなことをしています! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

答えて

0

GO SMSと他のSMSアプリケーションがSMS受信ブロードキャストを傍受し、他のものに行き渡るのを止めると聞いたので、テキストを受け取ったときに通知が出ます。 GO SMSをアンインストールして、それが正常に機能するかどうかを確認してください。

残念ながら、問題の原因が間違っている場合は優先順位を最高に設定しているため、ブロードキャストが破棄される前に受信することはできません。

+0

他に方法はありませんか?私は、「content:// sms/inbox」を介してアクセスすることができる程度のものを読んでいます... –

+0

申し訳ありませんが、私は放送を受信する他の方法がないことを意味しました。あなたの周りに道があると言うのは間違いありません。 ContentObserverクラスを調べる必要があります。このサイトで簡単に検索してください。いくつかの素晴らしい例があります。それはかなり簡単です。 –

関連する問題