gpt4 book ai didi

java - 以编程方式注册 BOOT_COMPLETED 广播

转载 作者:行者123 更新时间:2023-11-29 20:13:32 26 4
gpt4 key购买 nike

我正在尝试注册我的服务以在手机启动时启动。

我在我的服务类中设置了一个 BOOT_COMPLETED BroadcastReciever:

public int onStartCommand(Intent intent, int flags, int startId)
{
startService(intent);

_bootCompletedReciever = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "Got boot completed");
}
};


IntentFilter filter = new IntentFilter("android.intent.action.BOOT_COMPLETED");
registerReceiver(_bootCompletedReciever, filter);

return START_NOT_STICKY;
}

但是它没有被调用。我在我的 list 中设置了权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

你知道我在手机启动时让这个广播在我的服务中触发(没有在 list 中注册广播)我错过了什么吗?

回答

在这种情况下,我必须使用 XML 来注册一个在启动时调用我的服务的类:

public class BootBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Intent service = new Intent(context, S_GPS.class);
context.startService(service);
}
}

在 list 中:

<receiver android:name=".BroadcastReceivers.BootBroadcastReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>

最佳答案

您在那里注册的接收器无法在重启后继续存在,这是不可能的,因为它是动态注册的,并且注册会在重启时丢失。

您可以做的是在 list 中注册一个接收器,但将该接收器设置为 DISABLED,使用此标志:

android:enabled=["true" | "false"]

然后您可以使用程序包管理器以编程方式将其设置为启用

context.getPackageManager()
.setComponentEnabledSetting(ComponentName componentName, int newState, int flags);

来自文档:

componentName   The component to enable
newState The new enabled state for the component. The legal values for this state are:
COMPONENT_ENABLED_STATE_ENABLED, COMPONENT_ENABLED_STATE_DISABLED and COMPONENT_ENABLED_STATE_DEFAULT
The last one removes the setting, thereby restoring the component's state to whatever was set in it's manifest (or enabled, by default).
flags Optional behavior flags: DONT_KILL_APP or 0.

有关更多信息,请参阅包管理器文档。

关于java - 以编程方式注册 BOOT_COMPLETED 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34425570/

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