如何创建始终在后台 运行 的应用程序?

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
                    }
                }
            }
        }
    }
}