java - 如何使用android提供的消息服务唤醒远程PC?

标签 java android networking android-asynctask wake-on-lan

是否可以创建一个始终在后台运行并持续监听来自特定手机号码和特定格式的消息的 Android 应用程序,并采取必要的操作?这是我必须唤醒远程电脑的想法(请参阅上一个问题)。为此,我需要使用 2 部 Android 手机,手机 A 和手机 B。B 位于远程位置,并且始终通过 wifi 连接到无线网络。它继续监听来自A的消息(来自A的短信)。现在,如果 A 向 B 发送“WAKE ON PC EE:00:B3:2F:56:12 密码”之类的消息,则 B 应该在后台解析该消息,并向具有特定 mac 地址的 PC 发送魔术包。这只是一个想法。是否可以创建这样的应用程序?

initial setup:

        wired               wired    
modem------------router--------------PC(mac:EE:00:B3:2F:56:12)
                   |
                   |
                   |
                 wireless
                   |
                   |
                   |
                   ------------------android phone(B)  

嗨,是否可以在android中的2个应用程序之间发送消息(即在上述问题中,A是否可以将消息发送到B中运行的特定应用程序,而不是A发送消息到B的收件箱)收件箱?)?

最佳答案

对于 SMS 监听器的部分,您可以使用 BroadcastReceiver 并从 Pdu 中读取数据,如下所示:

public class SmsController extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    this.c=context;
    SmsMessage msgs[] = null;
    Bundle bundle = intent.getExtras();
    try {
        Object pdus[] = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];
        for (int n = 0; n < pdus.length; n++) {
            byte[] byteData = (byte[]) pdus[n];
            msgs[n] = SmsMessage.createFromPdu(byteData);
        }
    } catch (Exception e) {

    }
    for (int i = 0; i < msgs.length; i++) {
        String message = msgs[i].getDisplayMessageBody();
        if (message != null && message.length() > 0) {
            String from = msgs[i].getOriginatingAddress();
            if(message.contains("your code")){
                if(message.contains("MAC ADRESSE")){
                    controlRemotePC();
                } 
            }
        }
    }
    abortBroadcast();
}
}

manifest.xml:添加这些权限和接收者。

 <uses-permission android:name="android.permission.WRITE_SMS" />
 <uses-permission android:name="android.permission.READ_SMS" />
 <uses-permission android:name="android.permission.RECEIVE_SMS" />

 <receiver android:name=".SmsController" >
        <intent-filter android:priority="999" >
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
 </receiver>

关于java - 如何使用android提供的消息服务唤醒远程PC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10771835/

相关文章:

java - 当经过身份验证的用户访问未 protected 页面时,getRemoteUser() 返回 null

android - 检测 Android 手机中的 GPS 开/关开关

ios - NSOutputStream 无法关闭?

java - 域名最大长度

java - (a)Smack 在登录时返回 "service-unavailable (503)"错误()

java - 当服务器名称包含反斜杠 (localhost\TESTDATA) 时使用 JDBC

android - 未知属性 android :elevation

java - Android XML 上的图像和 TextView 错误

python - 从 Virtual Box 外部访问 python SimpleHTTPServer

java - Cassandra 一致性级别规则