我的广播接收器在应用启动时自动运行。
如何预防?我想在单击按钮时启动它。
广播接收器:
public class TestAlarmReceiver extends BroadcastReceiver {
@DebugLog
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, TestService.class);
i.putExtra("foo", "bar");
context.startService(i);
}
}
Intent 服务:
public class TestService extends IntentService {
public TestService() {
super("TestService");
}
@DebugLog
@Override
protected void onHandleIntent(Intent intent) {
Log.d(getClass().getSimpleName(), "Service is running");
}
}
此外,我将这些行添加到应用程序部分内的 AndroidManifest 文件中:
<receiver
android:name=".service.TestAlarmReceiver"
android:process=":remote" />
<service
android:name=".service.TestService"
android:exported="false" />
最佳答案
您应该在 list 中为接收器设置 android:enabled="false"
( options for receiver ),然后使用 package Manager 激活它启用它。
然后你可以在按钮点击上写这个函数:
public void enableReceiver(Context context) {
ComponentName component = new ComponentName(context, TestAlarmReceiver .class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
component,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
要在运行时停止接收器,您只需使用常量 PackageManager.COMPONENT_ENABLED_STATE_DISABLED
而不是 PackageManager.COMPONENT_ENABLED_STATE_ENABLED
。
我现在无法尝试,但这应该可以。
关于android - 防止服务在启动时启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32203649/