Android - Widgets

Un widget est un petit gadget ou contrôle de votre application Android placé sur l'écran d'accueil. Les widgets peuvent être très pratiques car ils vous permettent de mettre vos applications préférées sur votre écran d'accueil afin d'y accéder rapidement. Vous avez probablement vu des widgets courants, tels que le widget de musique, le widget météo, le widget d'horloge, etc.

Les widgets peuvent être de plusieurs types tels que des widgets d'information, des widgets de collection, des widgets de contrôle et des widgets hybrides. Android nous fournit un cadre complet pour développer nos propres widgets.

Widget - fichier XML

Pour créer un widget d'application, la première chose dont vous avez besoin est l'objet AppWidgetProviderInfo, que vous définirez dans un fichier XML de widget séparé. Pour ce faire, faites un clic droit sur votre projet et créez un nouveau dossier appeléxml. Maintenant, faites un clic droit sur le dossier nouvellement créé et créez un nouveau fichier XML. Le type de ressource du fichier XML doit être défini surAppWidgetProvider. Dans le fichier xml, définissez certaines propriétés qui sont les suivantes -

<appwidget-provider 
   xmlns:android="http://schemas.android.com/apk/res/android" 
   android:minWidth="146dp" 
   android:updatePeriodMillis="0" 
   android:minHeight="146dp" 
   android:initialLayout="@layout/activity_main">
</appwidget-provider>

Widget - Fichier de mise en page

Vous devez maintenant définir la disposition de votre widget dans votre fichier XML par défaut. Vous pouvez faire glisser des composants pour générer du XML automatique.

Widget - fichier Java

Après avoir défini la mise en page, créez maintenant un nouveau fichier JAVA ou utilisez un fichier existant et étendez-le avec AppWidgetProvider class et remplacez sa méthode de mise à jour comme suit.

Dans la méthode de mise à jour, vous devez définir l'objet de deux classes qui sont PendingIntent et RemoteViews. Sa syntaxe est -

PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_main);

À la fin, vous devez appeler une méthode de mise à jour updateAppWidget () de la classe AppWidgetManager. Sa syntaxe est -

appWidgetManager.updateAppWidget(currentWidgetId,views);

Une partie de la méthode updateAppWidget, il existe d'autres méthodes définies dans cette classe pour manipuler les widgets. Ils sont les suivants -

Sr. Non Méthode et description
1

onDeleted(Context context, int[] appWidgetIds)

Ceci est appelé lorsqu'une instance d'AppWidgetProvider est supprimée.

2

onDisabled(Context context)

Ceci est appelé lorsque la dernière instance d'AppWidgetProvider est supprimée

3

onEnabled(Context context)

Ceci est appelé lorsqu'une instance d'AppWidgetProvider est créée.

4

onReceive(Context context, Intent intent)

Il est utilisé pour envoyer des appels aux différentes méthodes de la classe

Widget - Fichier manifeste

Vous devez également déclarer la classe AppWidgetProvider dans votre fichier manifeste comme suit:

<receiver android:name="ExampleAppWidgetProvider" >
   
   <intent-filter>
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
   </intent-filter>
   
   <meta-data android:name="android.appwidget.provider"
      android:resource="@xml/example_appwidget_info" />
</receiver>

Exemple

Voici un exemple illustrant l'utilisation de l'application Widget. Il crée des applications de widget de base qui ouvriront ce site Web actuel dans le navigateur.

Pour expérimenter cet exemple, vous devez l'exécuter sur un appareil réel sur lequel Internet fonctionne.

Pas La description
1 Vous utiliserez Android Studio pour créer une application Android sous un package com.example.sairamkrishna.myapplication.
2 Modifiez le fichier src / MainActivity.java pour ajouter le code du widget.
3 Modifiez le res / layout / activity_main pour ajouter les composants XML respectifs
4 Créez un nouveau dossier et un fichier xml sous res / xml / mywidget.xml pour ajouter les composants XML respectifs
5 Modifiez le fichier AndroidManifest.xml pour ajouter les autorisations nécessaires
6 Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats.

Voici le contenu de la modification MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.RemoteViews;
import android.widget.Toast;

public class MainActivity extends AppWidgetProvider{
   public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
      for(int i=0; i<appWidgetIds.length; i++){
         int currentWidgetId = appWidgetIds[i];
         String url = "http://www.tutorialspoint.com";
         
         Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setData(Uri.parse(url));
         
         PendingIntent pending = PendingIntent.getActivity(context, 0,intent, 0);
         RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.activity_main);
         
         views.setOnClickPendingIntent(R.id.button, pending);
         appWidgetManager.updateAppWidget(currentWidgetId,views);
         Toast.makeText(context, "widget added", Toast.LENGTH_SHORT).show();
      }
   }
}

Voici le contenu modifié du xml res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textColor="#ff3412ff"
      android:textSize="35dp" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Widget"
      android:id="@+id/button"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="61dp"
      android:layout_below="@+id/textView" />

</RelativeLayout>

Voici le contenu de la res/xml/mywidget.xml.

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider 
   xmlns:android="http://schemas.android.com/apk/res/android" 
   android:minWidth="146dp" 
   android:updatePeriodMillis="0" 
   android:minHeight="146dp" 
   android:initialLayout="@layout/activity_main">
</appwidget-provider>

Voici le contenu de la res/values/string.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Voici le contenu de AndroidManifest.xml fichier.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      <receiver android:name=".MainActivity">
      
      <intent-filter>
         <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
      </intent-filter>
      
      <meta-data android:name="android.appwidget.provider"
         android:resource="@xml/mywidget"></meta-data>
      
      </receiver>
   
   </application>
</manifest>

Essayons d'exécuter votre application. Je suppose que vous avez connecté votre appareil mobile Android à votre ordinateur. Pour exécuter l'application à partir du studio Android, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Avant de démarrer votre application, Android studio affichera la fenêtre suivante pour sélectionner une option dans laquelle vous souhaitez exécuter votre application Android.

Sélectionnez votre appareil mobile en option, puis vérifiez votre appareil mobile qui affichera votre écran par défaut -

Accédez à la section de votre widget et ajoutez votre widget créé au bureau ou à l'écran d'accueil. Cela ressemblerait à quelque chose comme ça -

Maintenant, appuyez simplement sur le bouton du widget qui apparaît pour lancer le navigateur. Mais avant cela, assurez-vous que vous êtes connecté à Internet. Après avoir appuyé sur le bouton, l'écran suivant apparaîtra -

Remarque. En changeant simplement l'url dans le fichier java, votre widget ouvrira le site Web souhaité dans le navigateur.