Snippets Android (volume 1)

Autoriser l’installation de l’application sur la mémoire externe

Par défaut, l’application créée ne peut pas être déplacée sur la carte SD. Pour autoriser cette possibilité, ajouter la ligne suivante (en gras) dans le fichier Manifest :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="monpackage"
    android:installLocation="auto"
    android:versionCode="1"
    android:versionName="1.0.0">

Plusieurs valeurs sont possibles, mais « auto » signifie que l’emplacement lors de l’installation sera défini par l’appareil et pourra être modifié manuellement par l’utilisateur s’il le désire. Tout est expliqué ici !

Attention : il y a des situations où il ne faut surtout pas autoriser l’installation sur une mémoire amovible (comme un service permanent) au risque d’avoir de sérieuses instabilités !

Empêcher le rechargement de l’activité lors d’un changement de rotation

Lors d’un changement d’orientation (mais pas seulement), le comportement par défaut est de recharger l’activité à l’écran, même lorsqu’il n’y a qu’un seul layout pour les deux états. Cela est extrêmement perturbant pour l’utilisateur qui voit l’interface se « rafraîchir » sous ses yeux ! Cela est accentué si des éléments ou traitements lourds sont présents : une impression de lenteur générale s’en dégage.

Pour y remédier, deux étapes : premièrement, modifier la ou les activités dans le fichier Manifest, comme suit :

<activity
    android:name="monpackage.MonActivite"
    android:configChanges="keyboardHidden|orientation" >

Ensuite, dans le code Java des activités concernées, ajoutez simplement la méthode suivante :

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

Android ne recharge plus à présent l’activité lors d’un changement d’orientation ni lorsque le clavier est réduit ! Remarquons que cela peut être utile si un layout différent doit être appliqué lors de la rotation !

Ouvrir le Play Store sur la page de son application

Utile si l’on souhaite, par exemple, que l’utilisateur laisse une note pour son programme. C’est très simple :

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=monpackage.monappli")));

L’identifiant donné doit correspondre au nom du package complet de l’application désirée !

Supprimer le titre du programme en haut de l’activité

Sous certaines versions d’Android, elle peut être inesthétique vis à vis du design de votre application et souhaitez la supprimer.

C’est possible en ajoutant l’instruction suivante (en gras) dans la méthode onCreate() de l’activité principale :

super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);

Il est indispensable que l’instruction soit placée avant l’appel à setContentView() sous peine de plantage !

Intercepter l’appui sur la touche retour (« back »)

Si vous souhaitez empêcher l’utilisateur de quitter votre application « sauvagement » (en appuyant sur la touche retour) ou que vous voulez juste maîtriser vous-même l’extinction de votre programme, implémentez simplement la méthode suivante dans votre activité principale :

@Override
public void onBackPressed() {
    // Do some stuff here
    ...

    // Then finish (quit) the application
    this.finish();
}

Vous pouvez par exemple, y placer une boîte de dialogue demandant si l’utilisateur est sûr de vouloir quitter.

En vrac

  • Récupérer les chemins d’accès complets sur les espaces de stockage prédéfinis du système ? Jetez un œil du côté des méthodes statiques de la classe Environment !
  • Récupérer le nom complet de l’application ? getPackageName() devrait vous y aider !
  • Récupérer les méta-données de l’application (numéro de version, code de version, etc) ? Vous trouverez votre bonheur dans les méthodes filles de l’instruction getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA) !
Share Button

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *