Как получить общие настройки в методе doInBackground AsyncTask - PullRequest
1 голос
/ 14 июля 2020

Я создаю приложение для передачи данных с использованием прямого Wi-Fi. Я получаю строковое значение расширения из Uri в методе onActivityResult и сохраняю его в общих настройках.

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

 String extension;
        Uri uri = data.getData();
 Context context =  getActivity().getApplicationContext();
        extension = "."+getMimeType(context, uri);
       SharedPreferences sharedPreferences = myContext.getSharedPreferences(myName, MODE_PRIVATE);
        SharedPreferences.Editor myEdit = sharedPreferences.edit();
        myEdit.putString("hello", extension);
        myEdit.apply();
        
    }

До сих пор он работает нормально, поскольку значение расширения успешно сохраняется в общих настройках. Теперь в методе onConnectionInfoAvailable (связанном с широковещательным приемником) я вызываю AsyncTask.

  @Override
    public void onConnectionInfoAvailable(final WifiP2pInfo info) {
          new FileServerAsyncTask().execute();             
}

Теперь я хочу получить значение общего предпочтения в методе doInBackground AsyncTask. Но я не получаю значения расширения из общих настроек, хотя мой код работает нормально. Пожалуйста, помогите.

public static class FileServerAsyncTask extends AsyncTask<Void, Void, String> {

    @Override
        protected String doInBackground(Void... params) {
            
            try {
                 SharedPreferences sh = myContext.getSharedPreferences(myName, MODE_PRIVATE);
                    String extension = sh.getString("hello", "no"); 
}....

Примечание: myContext и myName определены как переменные publi c stati c.

...