我正在使用从Android Manifest File启动的SMS Receiver Service,使用以下代码。问题是,即使应用程序退出,它仍将继续工作。 如何阻止此服务接收短信?
启动服务代码:
<receiver android:name=".dataAccess.SMSReceiver" android:enabled="true">
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
答案 0 :(得分:4)
如果您想继续使用清单中定义的广播接收器,您仍然可以使用包管理器启用/禁用它。
检查here
ComponentName receiver = new ComponentName(context, SMSReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP)
答案 1 :(得分:1)
在我继续之前快速纠正:这实际上不是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);
}