java - Null Pointer Exception with "getPackageName()" -
i have been stuck on problem past week , half. made game using "kilobolt" framework, , have been trying implement in app purchase's in app , i've tried every way possible keep getting same error, there null pointer exception.
06-13 21:40:18.991: e/androidruntime(16384): java.lang.nullpointerexception 06-13 21:40:18.991: e/androidruntime(16384): @ android.content.contextwrapper.getpackagename(contextwrapper.java:127)
i have 1 activity have method leveltwobuttonclicked()
, calling method java class, null pointer exception coming , because of getpackagename()
.
i have in try catch statement:
skudetails = mservice.getskudetails(3, getpackagename(), "inapp", queryskus);
.
i have done research , read there issue context , calling getpackagename()
havent been able figure out issue yet 1 can me resolve this!
public abstract class androidgame extends activity implements game {
public static context mcontext; iinappbillingservice mservice; serviceconnection mserviceconn; static final string item_sku = "android.test.purchased"; @suppresswarnings("deprecation") @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); boolean isportrait = getresources().getconfiguration().orientation == configuration.orientation_portrait; int framebufferwidth = isportrait ? 480: 800; int framebufferheight = isportrait ? 800: 480; bitmap framebuffer = bitmap.createbitmap(framebufferwidth, framebufferheight, config.rgb_565); float scalex = (float) framebufferwidth / getwindowmanager().getdefaultdisplay().getwidth(); float scaley = (float) framebufferheight / getwindowmanager().getdefaultdisplay().getheight(); renderview = new androidfastrenderview(this, framebuffer); graphics = new androidgraphics(getassets(), framebuffer); fileio = new androidfileio(this); audio = new androidaudio(this); input = new androidinput(this, renderview, scalex, scaley); screen = getinitscreen(); linearlayout layout = new linearlayout(this); layout.setorientation(linearlayout.vertical); layout.addview(renderview); setcontentview(layout); powermanager powermanager = (powermanager) getsystemservice(context.power_service); wakelock = powermanager.newwakelock(powermanager.full_wake_lock, "mygame"); mcontext = getbasecontext(); mserviceconn = new serviceconnection() { @override public void onservicedisconnected(componentname name) { mservice = null; } @override public void onserviceconnected(componentname name, ibinder service) { mservice = iinappbillingservice.stub.asinterface(service); } }; intent serviceintent = new intent("com.android.vending.billing.inappbillingservice.bind"); serviceintent.setpackage("com.android.vending"); bindservice(serviceintent, mserviceconn, context.bind_auto_create); } public void leveltwobuttonclicked(){ assets.click.play(1.00f); arraylist<string> skulist = new arraylist<string> (); skulist.add("android.test.purchased"); bundle queryskus = new bundle(); queryskus.putstringarraylist("item_id_list", skulist); bundle skudetails; try { skudetails = mservice.getskudetails(3, getpackagename(), "inapp", queryskus); int response = skudetails.getint("response_code"); if (response == 0) { arraylist<string> responselist = skudetails.getstringarraylist("details_list"); (string thisresponse : responselist) { jsonobject object = new jsonobject(thisresponse); string sku = object.getstring("productid"); string price = object.getstring("price"); if (sku.equals("android.test.purchased")) { bundle buyintentbundle = mservice.getbuyintent(3, getpackagename(), sku, "inapp", "bgoa+v7g/yqdxvkrqq+jtfn4uqzbpiqjo4pf9rzj"); pendingintent pendingintent = buyintentbundle.getparcelable("buy_intent"); startintentsenderforresult(pendingintent.getintentsender(), 1001, new intent(), integer.valueof(0), integer.valueof(0), integer.valueof(0)); } } } } catch (remoteexception e) { e.printstacktrace(); } catch (jsonexception e) { e.printstacktrace(); } catch (sendintentexception e) { e.printstacktrace(); } } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == 1001) { int responsecode = data.getintextra("response_code", 0); string purchasedata = data.getstringextra("inapp_purchase_data"); string datasignature = data.getstringextra("inapp_data_signature"); if (resultcode == result_ok) { try { jsonobject jo = new jsonobject(purchasedata); string sku = jo.getstring("android.test.purchased"); toast.maketext(mcontext,"you have bought " + sku + ". excellent choice,adventurer!", toast.length_long).show(); } catch (jsonexception e) { toast.maketext(mcontext,"failed parse purchase data.", toast.length_long).show(); e.printstacktrace(); } } } } public static context getcontext(){ return mcontext; } @override public void onresume() { super.onresume(); wakelock.acquire(); screen.resume(); renderview.resume(); madview.resume(); if(assets.mainmenuloop.isstopped()){ assets.mainmenuloop.play(); } } @override public void onpause() { super.onpause(); wakelock.release(); renderview.pause(); screen.pause(); madview.pause(); if(assets.mainmenuloop.isplaying()){ assets.mainmenuloop.stop(); } sharedpreferences highscoredata = getsharedpreferences("high", 0); sharedpreferences.editor editor = highscoredata.edit(); editor.putint("score", highscore); editor.putint("secondscore", secondhighscore); editor.putint("thirdscore", thirdhighscore); editor.putint("fourthscore", fourthhighscore); editor.commit(); if (isfinishing()) screen.dispose(); } @override public input getinput() { return input; } @override public fileio getfileio() { return fileio; } @override public graphics getgraphics() { return graphics; } @override public audio getaudio() { return audio; } @override public void ondestroy() { super.ondestroy(); madview.destroy(); /* if (mservice != null) { unbindservice(mserviceconn); } */ } @override public void setscreen(screen screen) { if (screen == null) throw new illegalargumentexception("screen must not null"); this.screen.pause(); this.screen.dispose(); screen.resume(); screen.update(0); this.screen = screen; } public screen getcurrentscreen() { return screen; }
}
// end of activity class // begin regular java class
public class inapppurchase extends screen { androidgame buy = new purchaselevels(); public inapppurchase(game game) { super(game); } @override public void update(float deltatime) { // todo auto-generated method stub @suppresswarnings("unused") graphics g = game.getgraphics(); list<touchevent> touchevents = game.getinput().gettouchevents(); int len = touchevents.size(); for(int = 0; < len; i++) { touchevent event = touchevents.get(i); if(event.type == touchevent.touch_up) { if(inbounds(event, 195, 142, 235, 55)) { // unlock level 2 buy.leveltwobuttonclicked(); } if(inbounds(event, 195, 310, 235, 55)) { // unlock level 3 } if(inbounds(event, 195, 490, 235, 55)) { // unlock level 4 } if(inbounds(event, 70, 630, 210, 55)) { // restore button assets.click.play(1.00f); } if(inbounds(event, 330, 635, 130, 130)) { game.setscreen(new mainmenuscreen(game)); assets.click.play(1.00f); } } } } private boolean inbounds(touchevent event, int x, int y, int width, int height) { if (event.x > x && event.x < x + width - 1 && event.y > y && event.y < y + height - 1){ return true; } else { return false; } } public void updateui(){ } @override public void paint(float deltatime) { // todo auto-generated method stub } } @override public void pause() { // todo auto-generated method stub } @override public void resume() { // todo auto-generated method stub } @override public void dispose() { // todo auto-generated method stub } @override public void backbutton() { // todo auto-generated method stub }
} // main activity subclass had make create instance of abstract main activity "androidgame" in in app purchase class, in order call "leveltwobuttonclicked"
public class purchaselevels extends androidgame { @override public screen getinitscreen() { // todo auto-generated method stub return null; }
}
Comments
Post a Comment