如何创建始终在后台 运行 的应用程序?
how to create application that always run in the background?
我想创建一个可以在后台收听短信并始终 运行 的应用程序。
该服务必须在用户打开他的 android 时启动 - 并且在 android 设备关闭之前始终处于运行状态。
我只知道如何使用 GUI(使用 activity)创建应用程序 - 但在这种情况下,我不想使用任何 GUI。
我找不到任何有关如何操作的示例。
如果您只需要对收到的短信做出反应,您可以为此注册一个广播接收器。不需要特殊的后台服务。只要收到短信,就会调用您的代码。
在您的 android 清单中指出 java class 扩展 BroadcastReceiver 以接收传入的 SMS:
<receiver android:name="mypackage.SmsReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
不要忘记权限:
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
然后实现你的SmsReceiver
class:
public class SmsReceiver extends BroadcastReceiver {
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION.equals(action)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object messages[] = (Object[]) bundle.get("pdus");
if (messages != null) {
SmsMessage smsMessages[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessages[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
SmsMessage smsMessage = smsMessages[n];
String from = smsMessage.getOriginatingAddress();
//do your thing
}
}
}
}
}
}
我想创建一个可以在后台收听短信并始终 运行 的应用程序。
该服务必须在用户打开他的 android 时启动 - 并且在 android 设备关闭之前始终处于运行状态。
我只知道如何使用 GUI(使用 activity)创建应用程序 - 但在这种情况下,我不想使用任何 GUI。
我找不到任何有关如何操作的示例。
如果您只需要对收到的短信做出反应,您可以为此注册一个广播接收器。不需要特殊的后台服务。只要收到短信,就会调用您的代码。
在您的 android 清单中指出 java class 扩展 BroadcastReceiver 以接收传入的 SMS:
<receiver android:name="mypackage.SmsReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
不要忘记权限:
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
然后实现你的SmsReceiver
class:
public class SmsReceiver extends BroadcastReceiver {
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION.equals(action)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object messages[] = (Object[]) bundle.get("pdus");
if (messages != null) {
SmsMessage smsMessages[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessages[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
SmsMessage smsMessage = smsMessages[n];
String from = smsMessage.getOriginatingAddress();
//do your thing
}
}
}
}
}
}