通过TCP从broadcastreceiver向python服务器发送SMS数据

2024-05-19 22:46:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个广播接收器,用来监听收到的任何短信。我想通过套接字将这些数据发送回在本地计算机上运行的python服务器。每当我收到一个短信通知来证明我的祝酒器能正常工作。在我添加通过套接字发送数据之前,toast将出现在应用程序的内部或外部,但是在添加套接字部分之后,toast不仅不会通过套接字发送数据,而且toast也不会出现。在

这是我的短信服务器.java在

import java.net.Socket;
import java.net.UnknownHostException;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.widget.Toast;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;


public class SMSReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();

        Object messages[] = (Object[]) bundle.get("pdus");
        SmsMessage smsMessage[] = new SmsMessage[messages.length];
        for (int n = 0; n < messages.length; n++) {
            smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
        }


        //---"From: " +smsMessage[0].getDisplayOriginatingAddress() + "  Text: " + smsMessage[0].getDisplayMessageBody();

        // show first message
        Toast toast = Toast.makeText(context, "From: " +smsMessage[0].getDisplayOriginatingAddress() + "  Text: " + smsMessage[0].getDisplayMessageBody(), Toast.LENGTH_LONG);
        toast.show();


        Socket socket;
        try {
            socket = new Socket("10.0.2.2", 7000);
            OutputStream out = socket.getOutputStream();       
            PrintWriter output = new PrintWriter(out);         

            output.println("Hello from Android");
            out.flush();
            out.close();
            socket.close();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   


       /*
      try{
        Socket socket = new Socket("10.0.2.2",7000);
        DataOutputStream DOS = new DataOutputStream(socket.getOutputStream());
        DOS.writeUTF("From: " +smsMessage[0].getDisplayOriginatingAddress() + "  Text: " + smsMessage[0].getDisplayMessageBody());
        socket.close();
     } catch (UnknownHostException e1) {
        e1.printStackTrace();
     } catch (IOException e1) {
        e1.printStackTrace();
     }
    */
    }
}

这是python服务器,它监听连接并将接收到的数据打印到终端上

在服务器.py在

^{pr2}$

Tags: ioimport服务器newsocketjavaoutandroid