0

常にバックグラウンドで実行され、特定の携帯電話番号と特定の形式からのメッセージを聞き続け、必要なアクションを実行する Android アプリケーションを作成することは可能ですか? これは、リモート PC をウェイクアップするためのアイデアです (前の質問を参照してください)。この目的のために、電話機 A と電話機 B の 2 台の Android フォンを使用する必要があります。B は離れた場所にあり、常に Wi-Fi 経由でワイヤレス ネットワークに接続されています。A からのメッセージ (A からの SMS) を聞き続けます。ここで、A が「WAKE ON PC EE:00:B3:2F:56:12 パスワード」のようなメッセージを B に送信すると、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 に答える