繁体   English   中英

如何在另一个班级的活动中设置侦听器?

[英]How do i set a listener in an activity from another class?

我正在开发需要阅读传入消息的应用程序。 现在,我发现我需要使用BroadcastReceiver类中的onReceive方法。 现在我知道java不允许扩展两个类,所以我如何使其工作,我已经长期坚持了这一点,请帮忙! 另外,如果还有其他方法可以执行此操作,请引用。

公共类SMS扩展了Activity {Button btnSendSMS; EditText txtPhoneNo; EditText txtMessage;

 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sms); btnSendSMS = (Button) findViewById(R.id.btnSendSMS); txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String phoneNo = txtPhoneNo.getText().toString(); if (phoneNo.length()>0) sendSMS(phoneNo, phoneNo); else Toast.makeText(getBaseContext(), "Please enter a valid Phone Number.", Toast.LENGTH_SHORT).show(); } }); } private void sendSMS(String phoneNumber, String message) { PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMS.class), 0); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, pi, null); } Context context = getApplicationContext(); Intent intent = new Intent(); object.onReceive(context, intent); } 

类SMSBroadcastReceiver扩展了BroadcastReceiver {

 private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; private static final String TAG = "SMSBroadcastReceiver"; @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "Intent recieved: " + intent.getAction()); Toast.makeText(context, "HI", Toast.LENGTH_SHORT).show(); if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[])bundle.get("pdus"); final SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); } if (messages.length > -1) { Toast.makeText(context, "Message recieved: " + messages[0].getMessageBody(), 7000).show(); } } } } } 

您无需扩展两个类(在Java中这是不可能的,并且从来不需要)来实现您的目标。 要获取最后一条消息,只需创建一个静态消息变量,就可以在您的SMSBroadcastReceiver中说出来,并将该变量设置为onreceive中收到的最新消息。 可以使用SmsReceiver.latestmessage在整个应用程序中访问此静态变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM