android - Widget crashes when Button created -


first: newby. if surprising easy solution, please don't harass me.

i new widgets , wanted start doing them. flashlight program.

the problem is: can create widget when declare button in layout file, widget crashes , thing can see "fehler"(means "error" in german).

here xml file:

<?xml version="1.0" encoding="utf-8"?>     <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"          android:minheight="40dp"         android:minwidth="40dp"         android:resizemode=""         android:updateperiodmillis="100"         android:initiallayout="@layout/widget_switch"         android:widgetcategory="home_screen">      </appwidget-provider> 

the layout file is:

<?xml version="1.0" encoding="utf-8"?>     <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:orientation="horizontal"          android:background="@drawable/appwidget_dark_bg">          <button         android:id="@+id/switchbutton"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:texton="@string/toggle"/>      </linearlayout> 

the receiver part of manifest is:

<receiver      android:label="flashlight widget"     android:name="mywidgetprovider" >     <intent-filter >         <action android:name="android.appwidget.action.appwidget_update" />         <action android:name="android.appwidget.action.widget_button" />     </intent-filter>      <meta-data                     android:name="android.appwidget.provider"     android:resource="@xml/widget_switch" />  </receiver>  

and java file, in same package mainactivity

package com.quicksilver.flashlight; import android.app.pendingintent; import android.appwidget.appwidgetmanager; import android.appwidget.appwidgetprovider; import android.content.context; import android.content.intent; import android.hardware.camera; import android.hardware.camera.parameters; import android.widget.remoteviews;  public class widget_switch extends appwidgetprovider {      boolean clicked = true;     boolean camera_initialized=false;     camera mcamera;     public static string widget_button = "android.appwidget.action.widget_button";      public void onupdate(context context, appwidgetmanager appwidgetmanager, int[]     appwidgetids) {          if (!camera_initialized){                 mcamera=camera.open();                 camera_initialized=true;         }         remoteviews remoteviews = null;         remoteviews = new remoteviews(context.getpackagename(), r.layout.widget_switch);          intent intent = new intent(widget_button);         pendingintent pendingintent = pendingintent.getbroadcast(context, 0, intent, pendingintent.flag_update_current);         remoteviews.setonclickpendingintent(r.id.switchbutton, pendingintent );     }        public void onrecieve(context context, intent intent) {      if (widget_button.equals(intent.getaction()))         toggleflashlight();      }      private void turnon() {          //mcamera = camera.open();         parameters params = mcamera.getparameters();         params.setflashmode(parameters.flash_mode_torch);          mcamera.setparameters(params);         mcamera.startpreview();      }      private void turnoff() {           //mcamera = camera.open();         parameters params = mcamera.getparameters();         params.setflashmode(parameters.flash_mode_off);          mcamera.setparameters(params);         mcamera.startpreview();         //mcamera = camera.open();     }      public void toggleflashlight () {         if (clicked){             clicked = false;             turnon();         }else {             clicked = true;             turnoff();      } } 

logcat:

03-24 20:40:07.583: d/androidruntime(11560): shutting down vm 03-24 20:40:07.583: w/dalvikvm(11560): threadid=1: thread exiting uncaught exception (group=0x41635d40) 03-24 20:40:07.586: e/androidruntime(11560): fatal exception: main 03-24 20:40:07.586: e/androidruntime(11560): process: com.quicksilver.flashlight, pid: 11560 03-24 20:40:07.586: e/androidruntime(11560): java.lang.runtimeexception: unable instantiate receiver com.quicksilver.flashlight.mywidgetprovider: java.lang.classnotfoundexception: didn't find class "com.quicksilver.flashlight.mywidgetprovider" on path: dexpathlist[[zip file "/data/app/com.quicksilver.flashlight-1.apk"],nativelibrarydirectories=[/data/app-lib/com.quicksilver.flashlight-1, /vendor/lib, /system/lib]] 03-24 20:40:07.586: e/androidruntime(11560):    @ android.app.activitythread.handlereceiver(activitythread.java:2427) 03-24 20:40:07.586: e/androidruntime(11560):    @ android.app.activitythread.access$1700(activitythread.java:139) 03-24 20:40:07.586: e/androidruntime(11560):    @ android.app.activitythread$h.handlemessage(activitythread.java:1286) 03-24 20:40:07.586: e/androidruntime(11560):    @ android.os.handler.dispatchmessage(handler.java:102) 03-24 20:40:07.586: e/androidruntime(11560):    @ android.os.looper.loop(looper.java:136) 03-24 20:40:07.586: e/androidruntime(11560):    @ android.app.activitythread.main(activitythread.java:5102) 03-24 20:40:07.586: e/androidruntime(11560):    @ java.lang.reflect.method.invokenative(native method) 03-24 20:40:07.586: e/androidruntime(11560):    @ java.lang.reflect.method.invoke(method.java:515) 03-24 20:40:07.586: e/androidruntime(11560):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) 03-24 20:40:07.586: e/androidruntime(11560):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) 03-24 20:40:07.586: e/androidruntime(11560):    @ dalvik.system.nativestart.main(native method) 03-24 20:40:07.586: e/androidruntime(11560): caused by: java.lang.classnotfoundexception: didn't find class "com.quicksilver.flashlight.mywidgetprovider" on path: dexpathlist[[zip file "/data/app/com.quicksilver.flashlight-1.apk"],nativelibrarydirectories=[/data/app-lib/com.quicksilver.flashlight-1, /vendor/lib, /system/lib]] 03-24 20:40:07.586: e/androidruntime(11560):    @ dalvik.system.basedexclassloader.findclass(basedexclassloader.java:56) 03-24 20:40:07.586: e/androidruntime(11560):    @ java.lang.classloader.loadclass(classloader.java:497) 03-24 20:40:07.586: e/androidruntime(11560):    @ java.lang.classloader.loadclass(classloader.java:457) 03-24 20:40:07.586: e/androidruntime(11560):    @ android.app.activitythread.handlereceiver(activitythread.java:2422) 03-24 20:40:07.586: e/androidruntime(11560):    ... 10 more 03-24 20:40:09.361: i/process(11560): sending signal. pid: 11560 sig: 9 

so, have tons of material can work with. phone motorola moto g, , don't test on emulator because slow.

i hope find problem , solve because im getting bit frustrated.

thanks answers!

you should change following:

android:name="mywidgetprovider" 

to

android:name="widget_switch" 

in manifest.

per receiver tag documentation, name must match class's name in package.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -