短信广播接收器在一天后未触发
sms broadcast receiver not triggering after one day
在我的应用程序中,每当我们收到消息时,都需要显示一个带有预填充消息的弹出窗口。为此,我在清单文件
中使用了以下代码
<receiver
android:name="com.cte.broadcast.SMS_Receive_BroadCast"
android:enabled="false">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
并且每当应用程序登录时,使用以下代码注册广播接收器
ComponentName component = new ComponentName(getApplicationContext(),
SMS_Receive_BroadCast.class);
getApplicationContext().getPackageManager().setComponentEnabledSetting(component,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
每当应用程序登录时,使用以下代码注销广播接收器
ComponentName component_sms = new ComponentName(context.getApplicationContext(),
SMS_Receive_BroadCast.class);
getApplicationContext().getPackageManager().setComponentEnabledSetting(component_sms,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
所以这里一切正常。每当我们登录时,每当我们收到消息广播接收器触发器并弹出时,甚至应用程序都关闭了。并注销没有得到触发广播接收器也没有弹出。所以到目前为止一切都很好。但问题是一天后,每当我们收到消息时,广播接收器即使已登录也不会触发。但是每当我们打开应用程序并关闭它时,它就会正常工作。所以问题是一段时间后广播接收器自动注销我认为..
那么如何解决这个问题..提前致谢..
我遇到了类似的麻烦。我不知道为什么,但是根据你放置的 registerBroadcast,android 会杀死那个实例,它与 linux 上的进程执行堆栈有关。
我做了什么来解决这个问题:创建一个后台服务而不是 BroadcastReceiver,在那里你注册你的 BR 它会工作得很好,几天 =))) !
一些应用程序会中止您的广播意图,这将阻止其他应用程序接收意图。
解决方法是在intent-filter标签中增加android:priority
属性:
<intent-filter android:priority="priority value">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
在我的应用程序中,每当我们收到消息时,都需要显示一个带有预填充消息的弹出窗口。为此,我在清单文件
中使用了以下代码 <receiver
android:name="com.cte.broadcast.SMS_Receive_BroadCast"
android:enabled="false">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
并且每当应用程序登录时,使用以下代码注册广播接收器
ComponentName component = new ComponentName(getApplicationContext(),
SMS_Receive_BroadCast.class);
getApplicationContext().getPackageManager().setComponentEnabledSetting(component,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
每当应用程序登录时,使用以下代码注销广播接收器
ComponentName component_sms = new ComponentName(context.getApplicationContext(),
SMS_Receive_BroadCast.class);
getApplicationContext().getPackageManager().setComponentEnabledSetting(component_sms,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
所以这里一切正常。每当我们登录时,每当我们收到消息广播接收器触发器并弹出时,甚至应用程序都关闭了。并注销没有得到触发广播接收器也没有弹出。所以到目前为止一切都很好。但问题是一天后,每当我们收到消息时,广播接收器即使已登录也不会触发。但是每当我们打开应用程序并关闭它时,它就会正常工作。所以问题是一段时间后广播接收器自动注销我认为..
那么如何解决这个问题..提前致谢..
我遇到了类似的麻烦。我不知道为什么,但是根据你放置的 registerBroadcast,android 会杀死那个实例,它与 linux 上的进程执行堆栈有关。 我做了什么来解决这个问题:创建一个后台服务而不是 BroadcastReceiver,在那里你注册你的 BR 它会工作得很好,几天 =))) !
一些应用程序会中止您的广播意图,这将阻止其他应用程序接收意图。
解决方法是在intent-filter标签中增加android:priority
属性:
<intent-filter android:priority="priority value">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>