1

我正在使用从 Android 清单文件开始的 SMS 接收器服务,使用以下代码。问题是即使在应用程序退出后它仍将继续工作。如何停止此服务接收短信?

启动服务代码:

<receiver android:name=".dataAccess.SMSReceiver" android:enabled="true">
    <intent-filter >
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>
4

2 回答 2

4

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

在这里检查

ComponentName receiver = new ComponentName(context, SMSReceiver.class);

PackageManager pm = context.getPackageManager();

pm.setComponentEnabledSetting(receiver,
    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
    PackageManager.DONT_KILL_APP)
于 2012-12-17T19:21:50.173 回答
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);
}
于 2012-12-17T19:05:13.433 回答