Hello,
Je me suis mis récemment au développement sur Android, j'ai suivi quelques tutoriels et je me retrouve aujourd'hui confronté à un problème de compréhension par rapport aux Views et au fonctionnement des Widgets.
Dans l'absolu, mon but est de créer un Widget de type tamagotchi, avec une application qui se lancerai en appuyant dessus.
Pour l'instant je souhaiterai juste afficher un sprite animé dans un Widget.
J'ai commencé par suivre ce tuto : http://sberfini.developpez.com/tutor...oid/appwidget/
J'ai réussi à tout faire fonctionner sans la classe de Configuration, mais dès que je lie cette dernière à l'Activity j'ai une erreur au moment où je souhaite ajouter le Widget sur le bureau :
Si ça parle à quelqu'un je suis preneur, je me prends la tête dessus depuis une heure, et mes recherches sur Google ne m'ont remonté que le fait d'ajouter:
dans main.xml mais ça n'a rien changé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES"
Voilà dans un premier temps ce qui me bloque, toute aide est la bienvenue, merci =)
main.xml :
widget_meta.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/napply_widget_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/hello_world" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
AndroidManifest.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="72dp" android:minHeight="146dp" android:initialLayout="@layout/main" android:updatePeriodMillis="0" android:configure="com.game.widget.ConfigurationTamagotchiActivity" > </appwidget-provider>
TamagotchiActivity.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.game.widget" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES"> <!-- Notre AppWidget --> <receiver android:name=".TamagotchiActivity"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_meta" /> </receiver> <activity android:name="ConfigurationTamagotchiActivity" android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" /> </manifest>
ConfigurationTamagotchiActivity.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 package com.game.widget; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.widget.RemoteViews; public class TamagotchiActivity extends AppWidgetProvider { /** Called when the activity is first created. */ @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; // Pour chaque AppWidget MonWidgetDeveloppez (n'oubliez pas qu'on peut en ajouter tant qu'on veut), on les met à jour for (int i = 0; i < N; i++) { int appWidgetId = appWidgetIds[i]; updateAppWidget(context, appWidgetManager, appWidgetId); } } static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { // On récupère les Views de notre layout RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.main); // On peut agir sur ces vues views.setTextViewText(R.id.hello_world, "Hello Developpez !"); System.out.println("Hello World"); // On met ensuite à jour l'affichage du widget appWidgetManager.updateAppWidget(appWidgetId, views); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 package com.game.widget; import android.app.Activity; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; public class ConfigurationTamagotchiActivity extends Activity { //private int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("Config"); // On essaye de récupérer l'id de l'AppWidget // Intent intent = getIntent(); // Bundle extras = intent.getExtras(); // if (extras != null) { // mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, // AppWidgetManager.INVALID_APPWIDGET_ID); // } // Si l'intent ne contient pas son ID, ça ne sert à rien de continuer. // if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { // setResult(RESULT_CANCELED); // finish(); // } // Sinon on le configure comme prévu // configureWidget(getApplicationContext()); // IMPORTANT : penser à renvoyer l'ID du widget // Intent resultValue = new Intent(); // resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); // setResult(RESULT_OK, resultValue); // finish(); } // Une fois encore, libre à vous de faire ce que vous voulez. // Ici j'appelle la fonction update de mon Widget pour l'initialisation, // mais il ne tient qu'à vous d'en faire autre chose. // public void configureWidget(Context context) { // AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); // TamagotchiActivity.updateAppWidget(context, appWidgetManager,mAppWidgetId); // } }
Partager