是否可以创建一个Android应用程序,它始终在后台运行并继续收听来自特定手机号码和特定格式的消息,并采取必要的措施?这是一个我必须唤醒远程电脑的想法(请参阅上一个问题)。我需要为此目的使用2部Android手机,手机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中的两个应用程序之间发送消息(即上述问题,而不是A发送消息到B的收件箱,A是否可能将消息发送到B中运行的特定应用程序收件箱?)?
答案 0 :(得分: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>