service - Using onBind method and unable to start activity nullpointerexception Android -
my first time using service on android, read documentation , examples, wanna implement binded service activity, service scan available wifi networks , activity gets list of wifi, got stuck , don't know mistake, log said unable start activity nullpointerexception. manifest ok, ativity , service on diferents package. here code: activity, service
public class starterservice extends activity { final string tag = "wificonn:..."; //edittext txt; wifimanager mywifi; scanservice scan; list<scanresult> sredes; //private scanservice scan; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); dobindservice(); scan=new scanservice(); //sret.clear(); sredes=scan.getwifi(); (int i=0; i<sredes.size(); i++) { scanresult rets = sredes.get(i); // txt.append("rest: " + rets.ssid +" " + rets.bssid + "\n"); log.d(tag, "rest: " + rets.ssid +" " + rets.bssid); if (rets.ssid.equalsignorecase("red1")) { // txt.append("red encontrada: " + rets.ssid +" " + rets.bssid + "\n"); wificonfiguration wc = new wificonfiguration(); wc.allowedkeymanagement.set(wificonfiguration.keymgmt.none); wc.ssid = "\""+rets.ssid+"\""; wc.bssid = rets.bssid; wc.status = wificonfiguration.status.enabled; wc.hiddenssid = true; int netid = mywifi.addnetwork(wc); // añade red // txt.append("netid"+ integer.tostring(netid) +"\n"); if(mywifi.enablenetwork(netid, true)) // valida conexión { // txt.append("estado conexión: ok\n"); log.d("servicio", "activado"); } } else { // txt.append("no encontrado: ok\n"); log.d("servicio", "activado"); //this.stopself(); } } } private serviceconnection mconnection=new serviceconnection(){ public void onserviceconnected(componentname classname, ibinder binder){ scan=((scanservice.mybinder)binder).getservice(); toast.maketext(starterservice.this, "corriendo", toast.length_short).show(); } public void onservicedisconnected(componentname classname) { scan= null; } }; protected void dobindservice() { bindservice(new intent(this, scanservice.class), mconnection, context.bind_auto_create); } }
here service
public class scanservice extends service { timer timer = new timer(); edittext txt; wifimanager mwifi; private static final long update_interval = 5000; private final ibinder mbinder = new mybinder(); final string tag = "wificonn:..."; private list<scanresult> sret; public void oncreate() { super.oncreate(); timerscan(); } private void timerscan(){ timer.scheduleatfixedrate(new timertask(){ public void run(){ mwifi = (wifimanager)getsystemservice(context.wifi_service); mwifi.startscan(); //inicio scan log.d("service", "inicio scan()"); sret = mwifi.getscanresults(); //resultadosscan } },0,update_interval); toast.maketext(this, "servicio iniciado", toast.length_long).show(); log.i(getclass().getsimplename(),"tiempo iniciado"); } @override public ibinder onbind(intent arg0) { return mbinder; } public class mybinder extends binder { public scanservice getservice(){ return scanservice.this; } } @override public void ondestroy() { // todo auto-generated method stub super.ondestroy(); log.d("servicio", "destruido"); } public list<scanresult> getwifi(){ return sret; } }
when debugging error appear on activity:
dobindservice(); sredes=scan.getwifi();
my log
03-24 00:24:46.814: e/androidruntime(20798): fatal exception: main 03-24 00:24:46.814: e/androidruntime(20798): process: red1.pe, pid: 20798 03-24 00:24:46.814: e/androidruntime(20798): java.lang.runtimeexception: unable start activity componentinfo{wigo.pe/wigo.pe.starterservice}: java.lang.nullpointerexception 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.activitythread.performlaunchactivity(activitythread.java:2209) 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2269) 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.activitythread.access$800(activitythread.java:139) 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.activitythread$h.handlemessage(activitythread.java:1210) 03-24 00:24:46.814: e/androidruntime(20798): @ android.os.handler.dispatchmessage(handler.java:102) 03-24 00:24:46.814: e/androidruntime(20798): @ android.os.looper.loop(looper.java:136) 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.activitythread.main(activitythread.java:5102) 03-24 00:24:46.814: e/androidruntime(20798): @ java.lang.reflect.method.invokenative(native method) 03-24 00:24:46.814: e/androidruntime(20798): @ java.lang.reflect.method.invoke(method.java:515) 03-24 00:24:46.814: e/androidruntime(20798): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) 03-24 00:24:46.814: e/androidruntime(20798): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) 03-24 00:24:46.814: e/androidruntime(20798): @ dalvik.system.nativestart.main(native method) 03-24 00:24:46.814: e/androidruntime(20798): caused by: java.lang.nullpointerexception 03-24 00:24:46.814: e/androidruntime(20798): @ wigo.pe.starterservice.oncreate(starterservice.java:35) 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.activity.performcreate(activity.java:5248) 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1110) 03-24 00:24:46.814: e/androidruntime(20798): @ android.app.activitythread.performlaunchactivity(activitythread.java:2173) 03-24 00:24:46.814: e/androidruntime(20798): ... 11 more
thank much!!!
make constructor scanservice in scanservice class.
public scanservice() { }
now initiazlize in activity
scan = new scanservice(); sredes=scan.getwifi();
Comments
Post a Comment