我正在制作一个Android应用程序。在IncomingSMS.java中有一个名为senderNum的字符串。收到邮件时生成senderNum,senderNum字符串是邮件的发件人。我想将senderNum调用到另一个类。据说我需要返回字符串的值。但我不知道怎么做。下面显示的是代码的一部分。
CODE:
IncomingSMS.java
public class IncomingSms extends BroadcastReceiver {
private static final byte TARGET_PIN_2 = 0x2;
private String message = "";
private static boolean ledstate = false;
// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
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;
message = currentMessage.getDisplayMessageBody();
Log.i("SmsReceiver", "senderNum: " + senderNum
+ "; message: " + message);
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
toast.show();
// call led here
toggleLed();
}
// end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" + e);
}
}[/CODE]
下面的是我想要调用senderNum
字符串的类:
MainActivity.java
public void sendLOCKED()
{
SmsManager smsManager = SmsManager.getDefault();
// i want to call the senderNum below
smsManager.sendTextMessage("senderNum", null, "LOCKED", null, null);
}
public void sendUNLOCKED()
{
SmsManager smsManager = SmsManager.getDefault();
// i want to call the senderNum below
smsManager.sendTextMessage("senderNum", null, "UNLOCKED", null, null);
}
答案 0 :(得分:1)
我看到的一种方法是创建一个扩展具有
的类的新类public void onReceive(Context context, Intent intent)
方法。 现在在这个类中声明senderNum作为实例变量。使它成为getter和setter方法。事实上,如果它在所有实例中相同,则可以使其成为静态。然后将此新类设置为IncomingSms类的instamce的侦听器(无论哪个)。 然后,如果是静态的,你可以使用getter / setter ot直接引用类名。
答案 1 :(得分:1)
我对被问到的内容感到有点困惑,但我会尽力回答。
我会声明字段private String senderNum
和方法public String getSenderNum(){return senderNum;}
并删除String
中的声明:
String senderNum = phoneNumber;
message = currentMessage.getDisplayMessageBody();
然后在MainActivity.java
调用getSenderNum()
,在那里需要它。
答案 2 :(得分:1)
在SMSManager访问IncomingSms类中的任何地方(方法)后,只需将您的字符串变量声明为静态。
// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();
public static String senderNum ;
现在,您想要获取此String值的任何地方(或任何其他类或方法)只需使用类名调用它。
String returnValueOfsenderNum = IncomingSms.senderNum.toString();