Sms Kitkat行为:短信广播接收器在新安装后不工作,如果应用程序未启动

Sms Kitkat行为:短信广播接收器在新安装后不工作,如果应用程序未启动,sms,android-broadcast,Sms,Android Broadcast,我有一个安卓应用程序,可以听短信。这在舱单中: <receiver android:name=".SMSListner" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> 应用程序只有在第一次启动后才会接收广播。这是安卓安全。他们过去可以,但谷歌最近改

我有一个安卓应用程序,可以听短信。这在舱单中:

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

应用程序只有在第一次启动后才会接收广播。这是安卓安全。他们过去可以,但谷歌最近改变了这种行为。

你可以创建一个服务来呼叫广播接收器。此外,在主活动中的onCreate方法中,调用此服务,即使您的应用程序被终止,此服务仍应保持活动状态。抱歉

谢谢大卫!我感谢你对我的关注的反馈。这意味着我们需要启动一次应用程序,以便广播工作。那么,为了实现之前的功能,可以采取哪些变通方法?是的,你会的。唯一的例外是作为系统应用程序预安装的应用程序。以下是谷歌的注释:“请注意,系统在所有广播意图中添加标志\u排除\u停止\u包。它这样做是为了防止来自后台服务的广播无意或不必要地启动已停止应用程序的组件。后台服务或应用程序可以通过添加标志_INCLUDE _STOPPED _PACKAGES标志来覆盖此行为,以广播应允许激活已停止应用程序的意图。“我的情况是:如果我的应用程序没有活动,它只有一个接收器(此处为SMS接收器),我如何激活和接收常见的广播意图?我得到的答案是:A:事实上,您的上述应用程序在第一次安装时实际上没有停止状态。因为它没有启动程序可点击的机会。如果您不手动强制停止,它可以顺利接收正常广播。-请参阅更多信息:
根据答案,它应该自动工作实际上,但它在Kitkatow中不起作用。这是否回答了问题?创建新服务并在Oncreate中启动它需要启动应用程序。安装应用程序后,我的唯一目的是不启动应用程序,即使只启动一次,接收器也应能工作。
public void onReceive( Context context, Intent intent )
{

    String action = intent.getAction();
    Log.v( "KK TEST APP", "===============SMS Received===============" );
    if ( action.equals( ACTION_SMS_RECEIVED ) )
    {
        Log.v( "KK TEST APP", "action.equals( ACTION_SMS_RECEIVED )" );
    }
    else
    {
        Log.v( "KK TEST APP", "other message" );
    }

}