1

Я пытаюсь создать библиотеку Android, которая предоставляет операции AsyncTask. Я создал свою AsyncTask, как показано ниже. Однако я не знаю, как получить доступ к ресурсам библиотеки. Поле контекста задается активностью, которая использует эту библиотеку. Я использовал доступ к ресурсам, вызвав getActivity(). GetResources(). Но этот контекст AsyncTask возникает из проекта, который его использует, и я не знаю, как получить доступ к ресурсам библиотеки. Как я могу это достичь?Как я могу получить доступ к ресурсам библиотеки

public class CheckBalanceAsyncTask extends AsyncTask<Void, Void, Void> { 
private Context mContext; 
String json; 
JSONObject jsonObject,jsonObjResult; 
JSONArray jsonArray; 
String message,balance; 
ProgressDialog progress; 
    public CheckBalanceAsyncTask (Context context){ 
     mContext = context; 
     //progress = new ProgressDialog(mContext); 
    } 


     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
//   progress.setCancelable(false); 
//   progress.setMessage("please wait");//getString(R.string.pleasewait)); 
//   progress.setTitle("waiting");//getString(R.string.loading)); 
//   progress.setIcon(R.drawable.ic); 
//   progress.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
//   progress.setProgress(0); 
//   progress.setMax(100); 
//   progress.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      String aliasNo = ""; 

      PackageInfo pinfo = null; 
      try { 
       pinfo = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0); 
      } catch (NameNotFoundException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      String versionName = pinfo.versionName; 

      String cardServiceUrl = "blabla"; 
      Log.e("LOGGGGG", cardServiceUrl); 

      try { 
       json = JSONParser.getJSONFromUrl(cardServiceUrl); 
       try { 
        jsonObject = new JSONObject(json); 
       } catch (JSONException e) { 
        Log.e("JSON Parser", 
          "Error creating json object" + e.toString()); 
       } 
       jsonArray = jsonObject.getJSONArray("cardlist"); 

       jsonObjResult = jsonObject.getJSONObject("result"); 

       message = jsonObjResult.get("message").toString(); 

       Log.e("MESSAGE", "" + message); 

       JSONObject row = jsonArray.getJSONObject(0); 

       balance = row.optString("balance"); 

      } 

      catch (JSONException e) { 

       Log.e("json", "doInBackground2"); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void args) { 
      //progress.dismiss(); 

      try { 
       if (jsonObjResult.get("message").toString() 
         .equalsIgnoreCase("ok")) { 
        Toast.makeText(mContext, balance+" TL", Toast.LENGTH_SHORT).show(); 
       } 

       else { 
        Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); 
       } 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 
    } 
+0

Библиотека означает FAcebook sdk и т. Д. –

+0

Вы хотите контекст библиотечного проекта в проекте библиотеки? Если это так, не используйте mContext, который был предоставлен проектом, который использует библиотеку, просто используйте свой собственный контекст с помощью этого или getContext() – VipulKumar

+0

Я вызываю только этот класс AsynTask в библиотеке для моего проекта, и я могу Не обращайтесь к ресурсам библиотеки из класса AsynTask. getContext, и это не определено в классе AsyncTask. –

ответ

1

Ressources автоматически объединяется с основным приложением, то, не нужно делать что-то конкретное для строки доступа, вытяжка, расположения и т.д. ... getActivity(). GetResources() не будет работать нормально.

+0

например, мне нужно вызвать getString (R.string.server); в asynctask. Однако у меня нет доступа к контексту библиотеки. В mContext я могу получить доступ только к контексту проекта, который использует эту библиотеку. Как я могу получить доступ к собственному контексту библиотеки в AsyncTask? –

+0

@ FigenGüngör Вы должны отправить контекст в конструктор вашего AsyncTask – Suvitruf

+0

@ FigenGüngör С контекстом приложения вы имеете доступ к библиотечным ресурсам. Когда приложение компилируется, R.string.server будет объединен в ressources приложения. Затем, с контекстом приложения, у вас есть доступ к этой строке. – Jivy

Смежные вопросы