如何从另一个类调用字符串

时间:2013-12-30 05:10:31

标签: java android sms

我正在制作一个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);
        }

3 个答案:

答案 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();