停止SMS接收器
问题描述:
我正在使用SMS Receiver服务,该服务从Android清单文件开始,使用以下代码。问题是,即使在应用程序退出后它仍然可以正常工作。 如何通过接收短信停止该服务?停止SMS接收器
开始服务代码:
<receiver android:name=".dataAccess.SMSReceiver" android:enabled="true">
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
答
如果要继续使用清单中定义的广播接收器,仍可以使用包管理器启用/禁用它。
检查here
ComponentName receiver = new ComponentName(context, SMSReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP)
答
快速修正之前,我继续:这实际上不是一个Android服务,这是一个BroadcastReceiver。
最简单的方法是听你的应用程序的暂停/恢复,并在那里注册/取消注册SMS接收器。以下是Wi-Fi Direct教程中的示例代码片段。
@Override
public void onResume() {
super.onResume();
receiver = new SMSReceiver(...);
registerReceiver(receiver, intentFilter);
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
'stopService(新意图(SMSReceiver.class))'您的活动应该这样做。 – Nachi
我怀疑它; BroadcastReceiver甚至不是服务。你需要做的是*注销*接收器。如果接收者是通过清单注册的,我甚至不知道你是否可以这样做。一种可能的解决方案是使用registerReceiver()而不是清单,那么你一定能够以编程方式取消注册。但是现在你需要安排被调用的代码来完成注册。 –