我想做一个应用程序,它的设置中有自动启动选项。我已经在我的应用程序中进行了设置活动,这是从PreferenceActivity派生的,并为自动启动提供了CheckBoxPreference选项。如果启用了自动启动选项,我的应用程序应该在启动电话时启动。如果自动启动选项被禁用,那么它不应该在启动完成时启动。
为了实现这一点,我实现了BroadcastReceiver的派生类,它接收BOOT_COMPLETED意图,在AndroidManifest.xml中声明接收者,并在AndroidManifest.xml.中给予许可。
在应用中也有一个派生类的应用程序和启动服务,也是从onCreate方法中的应用派生类派生出来的。如果我在AndroidManifest.xml中声明接收者,那么在启动完成后调用我的应用程序的onCreate,然后调用BroadcastReceiver的onReceive方法。
现在的问题是,无论是启用还是禁用自动启动,每次启动完成后,我的应用程序都会启动。禁用自动启动时,是否可能不启动应用程序?
发布于 2012-01-21 05:25:52
我认为从Android3.1开始, your BroadcastReceiver收到了BOOT_COMPLETED的意图,它将无法工作。用户必须通过与其交互来唤醒应用程序。
因此,在启动设备之后,所有第三方应用程序都处于停止状态。
对于当前的应用程序,您可以使用SharedPreferences自动启动应用程序。
更新:(仅适用于安卓版本低于3.1的更高版本,但在设备启动完成后,您必须与应用程序进行用户交互)
您需要使用带有BroadcastReceiver意图的android.intent.action.BOOT_COMPLETED。
在清单文件中添加以下内容:
<receiver android:name="App_Receiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>App_Receiver类实现BoradcastReciever。实现onReceive()方法,并从应用程序中启动您最喜欢的活动。
public void onReceive(Context context, Intent intent) {
// make sure you receive "BOOT_COMPLETED"
// Here isAutoStartEnabled check sharedPreferences for Auto Start flag
if ( isAutoStartEnabled ) {
if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
{
// Start the service or activity
}
}https://stackoverflow.com/questions/8950854
复制相似问题