2012-04-21 8 views
0

メッセージの内容やソース番号などを受け取ったときに受信したメッセージからいくつかの情報を渡したいときに、その情報をボタンに入れたいときある条件は真実ではなく、メッセージングアプリケーションを構築しているので、受信したメッセージを「受信トレイ」に保存したいのですが、どうすればいいのですか? Ps。クラス内の私の受信方法は、broadcastReceiverを拡張し、私の他のクラスは、アクティビティを延長します 事前に感謝!ここ は私がbroadcastRecevier onreceiveメッセージの内容を処理しています

public class Re extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) 
{ 
Bundle bundle = intent.getExtras();  
SmsMessage[] msgs = null; 
String address=""; 
    String body=""; 
    long time = 0; 
    if (bundle != null) 
    { 
     //---retrieve the SMS message received--- 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 
address= msgs[i].getOriginatingAddress(); 
      body=msgs[i].getMessageBody().toString(); 
      time=msgs[i].getTimestampMillis(); 
} 

} 

broadcastreceiver延びており、ここにあなたがReceiverのonReceiveからあなたの活動へのアクセス権を持っているしたい場合は、私が活動

public class ThirdView extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.third); 
    } 
} 
+0

こんにちは、もう少し "具体的"にしてください。あなたの問題は何ですか?放映されたインテントから値を取得していますか?実行時にボタンを更新しますか?それとも?そして、おそらくあなたがそれをやろうとしたときにいくつかのコードを提供してください、それは人々があなたを助けるのを助けるでしょう;)。 –

+0

Hey Tomasz Gawelさん、ありがとうございます。私はいくつかのコードを提供します。私の問題は:メッセージや特定の条件を受け取ったときに、受信トレイのようなものにしたい、例:メッセージ== "ジョン"は、ボタンのテキストと受信したメッセージの詳細をボタンのテキストを作成します。 – Hemsi

答えて

0

を拡張し、私の第二のクラスで私の最初のクラスである - そしてあなたがすべきBroadcastReceiverをActvityの内部クラスとして定義し、それをプログラムで登録します(onStartメソッドではonStopで登録解除します)。

public class ThirdView extends Activity { 

    private static final IntentFilter intentFilter = 
     new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 

    TextButton myButton; 

    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      SmsMessage[] messages; 
      //read parse pdus data from intent and pupulate messages array 
      //... 

      //update the button 
      if(messages.length > 0) { 
       myButton.setText(messages[0].getOriginatingAddress()); 
      } 
     } 

    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.third); 
     myButton = (TextButton) findViewByiD(R.id.myButton); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     registerReceiver(receiver, intentFilter); 
    } 

    @Override 
    protected void onStop() { 
     unregisterReceiver(receiver); 
     super.onStop(); 
    } 
} 
+0

あなたの役に立つ回答、あなたがメッセージとその中の送信元アドレスを受け取ったときに作成されたボタンがありがとうございます。しかし、私が戻って再びボタンを開いたときのようにボタンが保存されませんでした。メッセージそれは別のボタンを作成しません..あまりにも多くのあなたのアンドロイド開発で私の最初の試してみている場合は申し訳ありません。再度 – Hemsi

+0

あなたの放送受信機は、ローカルデータベースにSMSを保存する必要がありますし、あなたの活動shoudレンダリングリストは、データベースに格納されています。この場合、プログラムではなくマニフェストに登録された受信者に戻ってください。受信者はメッセージを保存するサービスを開始し、新しいメッセージが保存されたことをアクティビティに知らせるために別のインテント(アプリ内でローカル)をブロードキャストします。上記のアクティビティと同様に、アクティビティはSMSが受信したインテントをリッスンします。メッセージはアプリのデータベースにあり、IDからdbから取得できます。 –

+0

貴重な情報をお寄せいただきありがとうございます。ぜひお試しいただき、ご意見をお寄せください! – Hemsi

関連する問題