停止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> 
+0

'stopService(新意图(SMSReceiver.class))'您的活动应该这样做。 – Nachi

+0

我怀疑它; BroadcastReceiver甚至不是服务。你需要做的是*注销*接收器。如果接收者是通过清单注册的,我甚至不知道你是否可以这样做。一种可能的解决方案是使用registerReceiver()而不是清单,那么你一定能够以编程方式取消注册。但是现在你需要安排被调用的代码来完成注册。 –

如果要继续使用清单中定义的广播接收器,仍可以使用包管理器启用/禁用它。

检查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); 
}