如何在 textview 而不是 toast 中显示收到的短信

how to show received sms in textview instead of toast

我目前正在开发一个简单的 android 应用程序来读取 SMS 并在 TexView 而不是 Toast 中打印它。但是在接收器 activity 中,我们没有初始化 "findbyid" 因此我们无法在 textView 中打印短信。现在我在 Toast 中显示 SMS 以进行测试,但我不想在 Toast 中显示它。我也阅读了 questions/answer 和其他文章,但找不到我想要的。

接收者activity,

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);
    }

}

}

我的家activity是空的,因为我找不到放在这里的代码。

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_smsclass收到短信时添加以下代码

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

每当您在接收器中收到短信时,请在您的 activity 中注册您的接收器
在您的接收器中使用此代码 class

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

在此之后在您的 activity 中注册广播接收器

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);
}