gpt4 book ai didi

android - 防止服务在启动时启动

转载 作者:搜寻专家 更新时间:2023-11-01 08:41:27 25 4
gpt4 key购买 nike

我的广播接收器在应用启动时自动运行。

如何预防?我想在单击按钮时启动它。

广播接收器:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com