Try   HackMD

2021-02-17 | Kotlin | Composants

tags: kotlin android gobelins

Contexte

Permet d'accéder aux ressources, à des services de base (alamre, notifications)
Le SDK permet de récupérer le contexte facilement

Exemple de récupération du contexte :

getContexte() getBaseContexte() getApplicationContexte() MainActivity mainActivity = MainActivity.this; mainActivity.getString(R.string.app_name);

Manifest

  • Ficher xml qui définit la configuration de l'application
  • Définit les composants d'une app (Activités, permissions, services)
  • Utilisé par le système pour gérer l'app (lancer l'application)
  • Fichier obligatoire dans toute les applications
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ameliemouillac.gmail.exampledmii1"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.ExampleDMII1"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

Permissions

  • Les permissions sont renseignées dans le manifest
  • Elles permettent de protéger la vie privée des utilisateurs
  • Etre transparent par rapport aux utilisateurs

Features

  • Les features sont renseignées dans le manifest
  • Utilisation de composants hardware du téléphone (exemple : NFC - paiement sans contact)
  • Indiquer les features obligatoire pour utiliser l'application
  • Si le téléphone n'a pas la feature indiquée, alors il n'est pas possible d'installer l'application (elle n'apparaît pas dans le playstore)

Application

  • Définit les composants de l'application

Intents, Intentions

  • Permettent de décrire une action à éxecuter
  • Communiquer avec les autres composants du système (ex : lancer la caméra, appeler un numpéro de téléphone, connaîtrela position de l'utilisateurs)

Par exemple, pour passer d'une vue à une autre, c'est le SDK qui s'en charge. On indique alors cette action avec les intents.

Une intention se décompose en 3 parties :

  1. Origine : créer l'intention
  2. Système : traiter l'intention
  3. Destination : éxecuter l'intention

L'origine et la destination peuvent être la même application.

//explicite Intent intention = new Intent(MainActivity.this,SecondActivity.class); startActivity(intention); //implicite Uri uri = Uri.parse("https://panda.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri);

Inbtentions explicite

Je peux fournir toute les informations

Intentions implicite

Je ne peux pas forunir toute les infos (par exemple je ne sais pas par quel application l'utilisateur envoie des mails - gmail, yahoo)

Filtres d'intentions

  • Déclarer uen lmiste d'intentions
  • Dire à quelle action je suis capable de répondre
  • Déclarées dans le manifest
<!--AndroidManifest.xml--> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

Passer des données

On peut utiliser putExtra pour partager des données via un intent (= Bundle)

// MainActivity Intent intention = new Intent(MainActivity.this,SecondActivity.class); intention.putExtra("value1", "hello world"); startActivity(intention); //SecondActivity String value1 = getIntent().getStringExtra("value1");

Dans l'exemple ci-dessus, on utilise une valeur en dur, mais on peut également passer des models que l'on a nous-même créé (getParcelableExtra()), ou des valeurs issues d'un formulaire par exemple.