Автоматический запуск приложения после завершения загрузки в Android
Я хочу сделать приложение, которое имеет опцию автоматического запуска в своих настройках. Я сделал активность настроек в своем приложении, которая является производной от PreferenceActivity и дает опцию CheckBoxPreference для автоматического запуска. Если опция автоматического запуска включена, мое приложение должно запускаться после завершения загрузки телефона. И если опция автоматического запуска Отключена, то она не должна запускаться при завершении загрузки.
для достижения этого я реализовал производный класс BroadcastReceiver, который получает boot_completed намерение, объявляет приемник в AndroidManifest.xml, а также дать разрешение в AndroidManifest.XML.
в приложении также существует производный класс приложения и службы запуска также из метода onCreate производного класса приложения. если я объявляю приемник в AndroidManifest.затем xml после завершения загрузки onCreate моего приложения вызывается и после этого onReceive метод BroadcastReceiver называемый.
Теперь проблема в том, что мое приложение запускается при загрузке каждый раз, включен ли автоматический запуск или отключен. Можно ли не запускать приложение, когда автоматический запуск отключен ?
5 ответов
вы можете использовать общее предпочтение для хранения логического значения для isAutoStartEnabled
, и проверьте это значение в BroadcastReciver, запустите намерение, только если это правда.
в вашем случае проблема не в том, получаете ли вы трансляцию, а в том, кто ее получает. Удачи..
надеюсь, это поможет..
Я думаю, что от Android 3.1 и далее ваш BroadcastReceiver, который получает BOOT_COMPLETED
намерение не будет работать. Пользователь должен разбудить приложение, взаимодействуя с ним.
Итак, после загрузки устройства все стороннее приложение лежит как остановка.
и в настоящее время ваше приложение вы можете использовать SharedPreferences
для автоматического запуска приложения..
обновление: (только для Android версии ниже 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
}
}
вы должны добавить использование-разрешение android.разрешение.RECEIVE_BOOT_COMPLETED в вашем Манифесте.
final SharedPreferences sharedPreferences = getSharedPreferences("Application", MODE_PRIVATE);
boolean isAutoStartEnabled = sharedPreferences.getBoolean("isAutoStartEnabled", false);
if ( isAutoStartEnabled ) {
startActivity(new Intent());
}
Я надеюсь, что это поможет вам
для меня работает следующий код:
public class BootCompleteReceiver extends BroadcastReceiver {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Log.d("boot completed", "boot completed caught");
Boolean autoRestart = false;
SharedPreferences sp = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
autoRestart = sp.getBoolean("autoRestart", false);
if (autoRestart){
Log.d("boot completed", "auto restart true");
Intent i = new Intent(context, WelcomeScreen.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
}