Bonjour,
J'ai le besoin de créer un widget qui au final serait un simple bouton qui lorsque j’appuierais dessus il utilisera une méthode de mon mainActivity.
Alors j'ai essayé de mettre ça en place, mais dés que j'appui sur le widget une fois qu'il est en place cela me m'affiche "launcher 3 s'est arrêté"
Voici le code de ma classe qui étend de AppWidgetProvider :
Voici le appwidget-provider :
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 public class MonWidget extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // Pour chaque instance de notre AppWidget for (int i = 0 ; i < appWidgetIds.length ; i++) { // On crée la hiérarchie sous la forme d'un RemotViews RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); // On récupère l'identifiant du widget actuel int id = appWidgetIds[i]; // On met à jour toutes les vues du widget appWidgetManager.updateAppWidget(id, views); } } }
voici le layout :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="146dp" android:minHeight="72dp" android:initialLayout="@layout/widget_layout" android:updatePeriodMillis="10"> </appwidget-provider>
et enfin voici la déclaration dans le manifest :
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 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:layout_margin="4dp"> <Button android:id="@+id/alerte_btn_wid" android:layout_width="146dp" android:layout_height="72dp" android:layout_centerInParent="true" android:background="@layout/bouton_appui" android:text="ALERTE !" android:onClick="clikBtnAlerte" /> </LinearLayout>
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
52
53
54
55
56
57 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.iris1.sdrp_top_1" > <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light.DarkActionBar" > > <service android:enabled="true" android:name=".Service_GPS" /> <activity android:screenOrientation="portrait" android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:screenOrientation="portrait" android:name=".PermissionGps" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- Notre AppWidget --> <receiver android:name=".MonWidget"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" /> </receiver> </application> </manifest>
voici le logcat :
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 05-26 12:18:37.624 13217-13217/com.example.iris1.sdrp_top_1 D/AndroidRuntime﹕ Shutting down VM 05-26 12:18:37.628 13217-13217/com.example.iris1.sdrp_top_1 E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.iris1.sdrp_top_1, PID: 13217 java.lang.RuntimeException: Unable to instantiate receiver com.example.iris1.sdrp_top_1.MonWidgetAlerte: java.lang.ClassNotFoundException: Didn't find class "com.example.iris1.sdrp_top_1.MonWidgetAlerte" on path: DexPathList[[zip file "/data/app/com.example.iris1.sdrp_top_1-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at android.app.ActivityThread.handleReceiver(ActivityThread.java:2589) at android.app.ActivityThread.access$1800(ActivityThread.java:147) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.iris1.sdrp_top_1.MonWidgetAlerte" on path: DexPathList[[zip file "/data/app/com.example.iris1.sdrp_top_1-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at android.app.ActivityThread.handleReceiver(ActivityThread.java:2584) ************at android.app.ActivityThread.access$1800(ActivityThread.java:147) ************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) ************at android.os.Handler.dispatchMessage(Handler.java:102) ************at android.os.Looper.loop(Looper.java:135) ************at android.app.ActivityThread.main(ActivityThread.java:5254) ************at java.lang.reflect.Method.invoke(Native Method) ************at java.lang.reflect.Method.invoke(Method.java:372) ************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) ************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) Suppressed: java.lang.ClassNotFoundException: com.example.iris1.sdrp_top_1.MonWidgetAlerte at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 11 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 05-26 12:18:42.856 13217-13217/com.example.iris1.sdrp_top_1 I/Process﹕ Sending signal. PID: 13217 SIG: 9
Merci par avance)
Partager