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

时间:2016-03-12 13:37:01

标签: android android-service android-background android-broadcastreceiver

我想创建一个监听短信并始终在后台运行的应用程序。

该服务必须在用户打开他的Android时启动 - 并始终在操作,直到Android设备关闭。

我只知道如何使用GUI(带有活动)创建应用程序 - 但在这种情况下,我不想使用任何GUI。

我没有找到任何如何做的例子。

1 个答案:

答案 0 :(得分:2)

如果您只需要对传入的短信作出反应,您可以为此注册一个广播接收器。无需特殊背景服务。只要收到短信,您的代码就会被调用。

在你的android清单中指出一个扩展BroadcastReceiver的java类,以便为传入的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课程:

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