J'ai un problème avec l'initialisation de mon application correctement après l'autostart.Android: application de démarrage automatique et préférences de chargement
J'ai réussi à faire fonctionner un démarrage automatique, après un redémarrage, l'application est affichée comme démarrée, mais pas celle de la minuterie. Ma conjecture est que la fonction "onCreate" de MyApp n'est pas appelée quand j'appelle le context.startService(). Les minuteurs sont définis dans la fonction doActivity() de MyApp.
J'apprécierais grandement des conseils sur ce que je pourrais faire de mal ou des liens vers de bons tutoriels. :)
Le manifeste :
<activity android:name=".MyApp"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="MyApp_Receiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>[/syntax]
MyApp_Receiver est un BoradcastReciever avec les deux fonctions suivantes
public void onReceive(Context context, Intent intent) {
// Do Autostart if intent is "BOOT_COMPLETED"
if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
{
// Start the service
context.startService(new Intent(context, MyApp.class));
}
// Else do activity
else
MAIN_ACTIVITY.doActivity();
}
public static void setMainActivity(MyApp activity)
{
MAIN_ACTIVITY = activity;
}
MyApp étend PreferenceActivity et a une onCreate() et un doActivity(), le doActivity() lit les préférences et définit une minuterie en fonction de celles-ci.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Show preferences
addPreferencesFromResource(R.xml.preferences);;
// Register Preference Click Listeners
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
// Prepare for one-shot alarms
if (mIntent == null)
{
mIntent = new Intent(MyApp.this, MyApp_Receiver.class);
mSender = PendingIntent.getBroadcast(MyApp.this,
0, mIntent, 0);
MyApp_Receiver.setMainActivity(this);
}
// Refresh and set all timers on start
doActivity();
}
Merci! Il est bon de savoir que. :) Essayer de l'implémenter Je suis arrivé au prochain problème. J'ajoute mes préférences en utilisant: addPreferencesFromResource (R.xml.preferences); Je n'arrive pas à les obtenir de telle sorte que dans onRecieve() je peux les lire avec: context.getSharedPreferences ("prefs_myApp", Context.MODE_PRIVATE); Je veux vraiment les créer à partir de XML et non à partir de code ... – BBoom
Utilisez 'PreferenceManager.getDefaultSharedPreferences'. – CommonsWare
Génial, merci! Tu gères. :) Fonctionne parfaitement maintenant. (Je vous voterais si j'avais assez de réputation: P) – BBoom