Java for Android Call getPackageName() from within an AsyncTask -


i working on android app using inappbilling. moved following code main activity asynctask, recommended google:

class getitemlist extends asynctask<integer, integer, long> {  iinappbillingservice mservice;  serviceconnection mserviceconn = new serviceconnection() {    @override    public void onservicedisconnected(componentname name) {        mservice = null;    }     @override    public void onserviceconnected(componentname name,       ibinder service) {        mservice = iinappbillingservice.stub.asinterface(service);    } };  @override protected long doinbackground(integer... params) {     arraylist<string> skulist = new arraylist<string> ();     skulist.add("i001");     skulist.add("i002");     bundle queryskus = new bundle();     queryskus.putstringarraylist("item_id_list", skulist);     bundle skudetails = null;     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;               object = new jsonobject(thisresponse);               string sku = object.getstring("productid");               string price = object.getstring("price");               string mpremiumupgradeprice;               string mgasprice;             if (sku.equals("i001")) mpremiumupgradeprice = price;               else if (sku.equals("i002")) mgasprice = price;            }         }     } catch (remoteexception e) {         // todo auto-generated catch block         log.d("synch billing", "error remote: " + e.getmessage());         e.printstacktrace();     }     catch (jsonexception e) {         // todo auto-generated catch block         log.d("synch billing", "error json: " + e.getmessage());         e.printstacktrace();     }     return null; } 

}

my problem call getpackagename() (the first line of try block) giving error, "the method getpackagename() undefined task getitemlist." how call getpackagename() within asynctask? i've tried getcontextwrapper.getpackagename(), getapplicationcontext.getpackagename(), , getresources.getpackagename().


corrected code, based on mixel's answer below:

    package com.myknitcards;  import java.util.arraylist;  import org.json.jsonexception; import org.json.jsonobject;  import com.android.vending.billing.iinappbillingservice;  import android.app.activity; import android.content.componentname; import android.content.serviceconnection; import android.os.asynctask; import android.os.bundle; import android.os.ibinder; import android.os.remoteexception; import android.util.log; import android.view.menu; import android.view.menuitem;  public class availablecards extends activity {      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_available_cards);         string packagename = this.getpackagename();         new getitemlist(packagename).execute();         }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.available_cards, menu);         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         // handle action bar item clicks here. action bar         // automatically handle clicks on home/up button, long         // specify parent activity in androidmanifest.xml.         int id = item.getitemid();         if (id == r.id.action_settings) {             return true;         }         return super.onoptionsitemselected(item);     } }  class getitemlist extends asynctask<integer, integer, long> {      private string pname;      getitemlist(string packagename){         pname = packagename;     }      iinappbillingservice mservice;      serviceconnection mserviceconn = new serviceconnection() {        @override        public void onservicedisconnected(componentname name) {            mservice = null;        }         @override        public void onserviceconnected(componentname name,           ibinder service) {            mservice = iinappbillingservice.stub.asinterface(service);        }     };      @override     protected long doinbackground(integer... params) {         arraylist<string> skulist = new arraylist<string> ();         skulist.add("i001");         skulist.add("i002");         bundle queryskus = new bundle();         queryskus.putstringarraylist("item_id_list", skulist);         bundle skudetails = null;         try {             skudetails = mservice.getskudetails(3, pname, "inapp", queryskus);             int response = skudetails.getint("response_code");             if (response == 0) {                arraylist<string> responselist                   = skudetails.getstringarraylist("details_list");                (string thisresponse : responselist) {                   jsonobject object;                   object = new jsonobject(thisresponse);                   string sku = object.getstring("productid");                   string price = object.getstring("price");                   string mpremiumupgradeprice;                   string mgasprice;                 if (sku.equals("i001")) mpremiumupgradeprice = price;                   else if (sku.equals("i002")) mgasprice = price;                }             }         } catch (remoteexception e) {             // todo auto-generated catch block             log.d("synch billing", "error remote: " + e.getmessage());             e.printstacktrace();         }         catch (jsonexception e) {             // todo auto-generated catch block             log.d("synch billing", "error json: " + e.getmessage());             e.printstacktrace();         }         return null;     } } 

add constructor getitemlist accepts packagename , assigns private field. use in mservice.getskudetails().

and when instantiate getitemlist in activity pass value returned getpackagename() getitemlist constructor.


Comments