远程激活android服务-即使在锁定的设备上

远程激活android服务-即使在锁定的设备上,android,service,remote-access,Android,Service,Remote Access,我正在开发一种安全应用程序,将远程触发(通过短信)。我的问题是:哪种最好的方式可以确保我的激活短信在手机锁定的情况下也能激活服务? 我不想干扰用户耗尽他们的电池,通常应用程序什么也不做,只有在它被激活的情况下。最好的方法是使用清单中声明的广播接收器+intentservice来执行您想要的操作 在清单中声明接收人: <receiver android:name="yourpackege.YourReceiver"> <intent-filter> <

我正在开发一种安全应用程序,将远程触发(通过短信)。我的问题是:哪种最好的方式可以确保我的激活短信在手机锁定的情况下也能激活服务?
我不想干扰用户耗尽他们的电池,通常应用程序什么也不做,只有在它被激活的情况下。

最好的方法是使用清单中声明的广播接收器+intentservice来执行您想要的操作

在清单中声明接收人:

<receiver android:name="yourpackege.YourReceiver">
    <intent-filter>
    <action   android:name="android.provider.Telephony.SMS_RECEIVED"/> 
    </intent-filter>

最好的方法是使用manifest+intentservice中声明的广播接收器来执行所需的操作

在清单中声明接收人:

<receiver android:name="yourpackege.YourReceiver">
    <intent-filter>
    <action   android:name="android.provider.Telephony.SMS_RECEIVED"/> 
    </intent-filter>

我也这么想,只是不确定该服务在任何情况下都会触发。你认为呢,我应该检查接收器中指定激活词的sms文本,还是始终运行服务,并在那里执行所有操作我这样问是因为上面提到的电池耗尽。在任何情况下,服务都应该触发,特别是因为手机被短信唤醒。如果你想超级肯定,检查一下。对于第二个问题,我想说这取决于你做什么检查。在接收器中执行一系列ifs肯定比运行intent服务便宜,因为它涉及分配对象和运行新线程(即使操作系统执行池)。感谢您的快速帮助!我也这么想,只是不确定该服务在任何情况下都会触发。你认为呢,我应该检查接收器中指定激活词的sms文本,还是始终运行服务,并在那里执行所有操作我这样问是因为上面提到的电池耗尽。在任何情况下,服务都应该触发,特别是因为手机被短信唤醒。如果你想超级肯定,检查一下。对于第二个问题,我想说这取决于你做什么检查。在接收器中执行一系列ifs肯定比运行intent服务便宜,因为它涉及分配对象和运行新线程(即使操作系统执行池)。感谢您的快速帮助!
private void notifyMessages(Context c, SmsMessage[] messages) {
    Log.d("SMS", "Received message");
    for(SmsMessage m : messages){
                if(isActivationMessage(m){
        Intent serviceIntent = new Intent(c, YourIntentService.class);
        serviceIntent.putExtra(); // Put all your extras here
        c.startService(myServiceIntent);
}