Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从另一个类调用字符串_Java_Android_Sms - Fatal编程技术网

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

Java 如何从另一个类调用字符串,java,android,sms,Java,Android,Sms,我正在制作一个android应用程序。在IncomingSMS.java中,有一个字符串称为senderNum。senderNum是在收到消息时生成的,senderNum字符串是消息的发送者。我想给另一个类调用senderNum。据说我需要返回字符串的值。但我不知道怎么做。下面显示的是部分代码 代码: IncomingSMS.java public class IncomingSms extends BroadcastReceiver { private static final byt

我正在制作一个android应用程序。在IncomingSMS.java中,有一个字符串称为senderNum。senderNum是在收到消息时生成的,senderNum字符串是消息的发送者。我想给另一个类调用senderNum。据说我需要返回字符串的值。但我不知道怎么做。下面显示的是部分代码

代码:

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]

我看到的一种方法是创建一个新类来扩展具有

public void onReceive(Context context, Intent intent)
方法。 现在在这个类中,将senderNum声明为实例变量。让它成为getter和setter方法。事实上,如果在所有实例中都是相同的,则可以将其设置为静态。然后将这个新类设置为IncomingSms类的instamce的侦听器(无论是哪个)。
然后,如果是静态的,您可以使用getter/setter直接引用类名

我对被问到的问题有点困惑,但我会尽力回答

我将声明字段
private String senderNum
和方法
public String getSenderNum(){return senderNum;}
,并删除
String
中的声明:

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

然后在
MainActivity.java
中调用
getSenderNum()

只需在smsmsmanager之后将字符串变量声明为静态,即可访问IncomingSms类中的所有位置(方法)

   // Get the object of SmsManager
   final SmsManager sms = SmsManager.getDefault();
   public static String senderNum ;
现在,无论何时(或任何其他类或方法)您想要获取这个字符串的值,只需使用类名调用它

    String returnValueOfsenderNum = IncomingSms.senderNum.toString();

您是指SmsManager吗?创建一个静态字符串变量并为其分配senderNum。使用另一个类中的这个静态字符串如果这个字段应该被重用或者这样做很好,你不只是把这个
senderNum
作为私有字段并为此创建一个getter吗?@michelle13很抱歉:D
    String returnValueOfsenderNum = IncomingSms.senderNum.toString();