Я создаю приложение для передачи данных с использованием прямого 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.