⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smsreceive.java

📁 改代码为基于j2me的多功能手机短机信收发
💻 JAVA
字号:


package sms;

import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;

import java.io.IOException;

/**
 * An example MIDlet displays text from an SMS MessageConnection
 */
public class SMSReceive extends MIDlet
    implements CommandListener, Runnable, MessageListener {

    /** user interface command for indicating Exit request. */
    Command exitCommand  = new Command("Exit", Command.EXIT, 2);
    /** user interface command for indicating Reply request */
    Command replyCommand = new Command("Reply", Command.OK, 1);
    /** user interface text box for the contents of the fetched URL. */
    Alert content;

    /** current display. */
    Display display;
    /** instance of a thread for asynchronous networking and user interface. */
    Thread thread;
    /** Connections detected at start up. */
    String[] connections;
    /** Flag to signal end of processing. */
    boolean done;
    /** The port on which we listen for SMS messages */
    String smsPort;
    /** SMS message connection for inbound text messages. */
    MessageConnection smsconn;
    /** Current message read from the network. */
    Message msg;
    /** Address of the message's sender */
    String senderAddress;
    /** Alert that is displayed when replying */
    Alert sendingMessageAlert;
    /** Prompts for and sends the text reply */
    SMSSender sender;
    /** The screen to display when we return from being paused */
    Displayable resumeScreen;

    /**
     * Initialize the MIDlet with the current display object and
     * graphical components.
     */
    public SMSReceive() {
        smsPort = getAppProperty("SMS-Port");

        display = Display.getDisplay(this);

        content = new Alert("SMS Receive");
        content.setTimeout(Alert.FOREVER);
        content.addCommand(exitCommand);
        content.setCommandListener(this);
        content.setString("Receiving...");

        sendingMessageAlert = new Alert("SMS", null, null, AlertType.INFO);
        sendingMessageAlert.setTimeout(5000);
        sendingMessageAlert.setCommandListener(this);

        sender = new SMSSender(smsPort, display, content, sendingMessageAlert);

        resumeScreen = content;
    }


    public void startApp() {
        /** SMS connection to be read. */
        String smsConnection = "sms://:" + smsPort;
        /** Open the message connection. */
        if (smsconn == null) {
            try {//System.out.println(smsPort);///////////////////////////////////////////////////
                smsconn = (MessageConnection) Connector.open(smsConnection);
                smsconn.setMessageListener(this);
                //System.out.println(smsconn);////////////////////////////////////////////////////
            } catch (IOException ioe) {
             ioe.printStackTrace();
            }
        }

        /** Initialize the text if we were started manually. */
        connections = PushRegistry.listConnections(true);      //不明白
        if (connections == null || connections.length == 0) {
         //System.out.println(connections);/////////////////////////////////////////////////////////
            content.setString("Waiting for SMS on port " + smsPort + "...");
        }
        done = false;
        thread = new Thread(this);
        thread.start();

        display.setCurrent(resumeScreen);
    }

    /**
     * Notification that a message arrived.
     * @param conn the connection with messages available
     */
    public void notifyIncomingMessage(MessageConnection conn) {
        if (thread == null) {
            done = false;
            thread = new Thread(this);
            thread.start();
        }
    }

    /** Message reading thread. */
    public void run() {
        /** Check for sms connection. */
        try {System.out.println(smsconn);////////////////////////////////////////////////////
            msg = smsconn.receive();
            //System.out.println("1");//////////////////////////////////////////////
            if (msg != null) {
                senderAddress = msg.getAddress();
                content.setTitle("From: " + senderAddress);
                if (msg instanceof TextMessage) {
                    content.setString(((TextMessage)msg).getPayloadText());
                } else {
                    StringBuffer buf = new StringBuffer();
                    byte[] data = ((BinaryMessage)msg).getPayloadData();
                    for (int i = 0; i < data.length; i++) {
                        int intData = (int)data[i] & 0xFF;
                        if (intData < 0x10) {
                            buf.append("0");
                        }
                        buf.append(Integer.toHexString(intData));
                        buf.append(' ');
                    }
                    content.setString(buf.toString());
                }
                content.addCommand(replyCommand);
                display.setCurrent(content);
            }
        } catch (IOException e) {
           e.printStackTrace();
        }
    }

    public void pauseApp() {
        done = true;
        thread = null;
        resumeScreen = display.getCurrent();
    }


    public void destroyApp(boolean unconditional) {
        done = true;
        thread = null;
        if (smsconn != null) {
            try {
                smsconn.close();
            } catch (IOException e) {

            }
        }
    }


    public void commandAction(Command c, Displayable s) {;
        try {
            if (c == exitCommand || c == Alert.DISMISS_COMMAND) {
                destroyApp(false);
                notifyDestroyed();


            } else if (c == replyCommand) {
                reply();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }


    private void reply() {
        // remove the leading "sms://" for diplaying the destination address
        String address = senderAddress.substring(6);
        String statusMessage = "Sending message to " + address + "...";
        sendingMessageAlert.setString(statusMessage);
        sender.promptAndSend(senderAddress);

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -