簡體   English   中英

如何在textview中顯示收到的短信,而不是吐司

[英]how to show received sms in textview instead of toast

我目前正在開發一個簡單的android應用程序,以讀取SMS並在TexView中而不是Toast中進行打印。 但是在接收方活動中,我們不會初始化“ findbyid”,因此我們無法在textView中打印SMS。 現在,我正在Toast中顯示SMS進行測試,但我不希望在Toast中顯示它。 我也閱讀了問題/答案以及其他文章,但找不到我想要的東西。

接收者活動,

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class read_sms extends BroadcastReceiver {
// Get the object of SmsManager


@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    final Bundle bundle = intent.getExtras();

    try {
        if (bundle != null) {
            final Object[] pdusObj = (Object[]) bundle.get("pdus");

            for (int i = 0; i < pdusObj.length; i++) {
                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                String phoneNumber = currentMessage.getDisplayOriginatingAddress();

                String senderNum = phoneNumber;
                String message = currentMessage.getDisplayMessageBody();

                Log.i("SmsReciver", "senderNum: " + senderNum + ", message: " + message);
                //ourSMS.getSmsDetails(senderNum, message);
                // Show SMS notification
                //Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, Toast.LENGTH_LONG).show();


                if(message.equals("Milind")){
                    Toast.makeText(context, "sms matched", Toast.LENGTH_LONG).show();
                }else {
                    Toast.makeText(context, "not matched", Toast.LENGTH_LONG).show();
                }
            } // end of for loop
        } // bundle

    } catch (Exception e) {
        // TODO: handle exception
        Log.e("SmsReciver", "Exception smsReciver" + e);
    }

}

}

我的家庭活動為空,因為我找不到此處放置的代碼。

public class home extends AppCompatActivity {

TextView SMS_textview;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home);
    SMS_textview = (TextView) findViewById(R.id.sms_text);


}
}

將該TextView更改為

public static TextView SMS_textview;

添加方法

public void recivedSms(String message)
{
    try
    {

     SMS_textview.setText(message);

    }
    catch (Exception e)
    {
    }
}

在收到短信后,在read_sms類中添加以下代碼

  home Sms = new home();
  Sms.recivedSms(message );

每當您在接收方中收到文本時,就在您的活動中注冊接收方
在您的Receiver類中使用此代碼

 Intent broadcastIntent = new Intent();
                broadcastIntent.putExtra("your key", your Value);
                broadcastIntent.setAction("link from  you have recieve a text");
                context.sendBroadcast(broadcastIntent);

在此之后,在您的活動中注冊一個廣播接收器,就像這樣

private void registerSmsReciever() {
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("link from  you have recieve a text");

  BroadcastReceiver  broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("onReceive", "Sms recieved in progress");
          String  message= intent.getStringExtra("key");
            textView.setText(intent.getStringExtra("key"));


        }

    };

    registerReceiver(broadcastReceiver, intentFilter);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM