2016-04-15 40 views
2

我已经创建了Android应用程序,它在系统启动时启动并且像魅力一样工作,但是如果用户通过CCleaner或Clean Master等第三方应用程序自动启动此应用程序,我想添加保护。 我想知道的唯一信息是信息我的应用程序被阻止自动启动并显示一次用户打开配置页面。我不打算改变这个设置。当然,这应该从代码角度而不是由第三方应用程序完成。如何检查我的Android应用程序是否被阻止在系统启动时启动?

有人知道我在哪里可以找到这些信息吗?

问候, DM

+0

我猜想,这些应用程序只使用'PackageManager#setComponentEnabledSetting()'禁用一个应用程序的启动Receiver,因为它们需要root权限;无论如何,至少干净大师确实如此。如果是这样的话,那么你可以用'PackageManager#getComponentEnabledSetting()'来检查应用程序启动Receiver的启用状态。 –

+0

谢谢!这正是我所期待的。 getPackageManager()。getComponentEnabledSetting(componentName);' 如果启用或禁用receiver(描述为componentName),则返回带info的整数状态。此外,从代码中更改此状态也是可能的。 – yale

+0

是的,您的应用可以始终启用和禁用自己的组件,但您需要root访问权限才能更改其他组件的状态。 –

回答

0

下面的代码解决了我的问题(不幸的是仅适用于Android的< 6.0)

ComponentName componentName = new ComponentName(this, MyBootCompletedReceiver.class); 
int state = getPackageManager().getComponentEnabledSetting(componentName); 

if (state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { 
// ALERT that Receiver is blocked -> works for Android < 6.0 
} 
相关问题