0

是否可以创建一个始终在后台运行并不断收听来自特定手机号码和特定格式的消息并采取必要措施的 android 应用程序?这是我必须唤醒远程电脑的一个想法(请参阅上一个问题)。为此,我需要使用 2 部安卓手机,手机 A 和手机 B。B 在偏远的地方,并且始终通过 wifi 连接到无线网络。它一直在收听来自 A 的消息(来自 A 的 SMS)。现在如果 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中运行的特定应用程序发送消息而不是收件箱?) ?

4

1 回答 1

1

对于 SMS 侦听器的一部分,您可以使用 BroadcastReceiver 并像这样从您的 Pdus 中读取:

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>
于 2012-05-27T09:18:36.443 回答