Получить SharedPreferences внутри намерения - PullRequest
0 голосов
/ 13 февраля 2019

Моя проблема в том, что мне нужна информация из моего shared Preferences в intent.Каждый раз, когда отправляется намерение о наличии беспроводной сети, я хочу проверить, выбрана ли автоматическая загрузка в моем приложении, и в случае, если оно вызывает действие.

К сожалению, я не могу получить shared preferences в этом context, поскольку getApplicationContext и getSharedPreferences не могут быть разрешены.

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.widget.Toast;

import java.io.File;

import static online.simpledesign.bikelog.Startup.mypreference;


    public class WifiUploader extends BroadcastReceiver {

            @Override
            public void onReceive(Context context, Intent intent) {

                NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                if (info != null && info.isConnected()) {
                    SharedPreferences pref = getApplicationContext().getSharedPreferences(mypreference, 0);
                    SharedPreferences sharedpreferences = getSharedPreferences(mypreference,Context.MODE_PRIVATE);
                    if (sharedpreferences.contains("autoupload")) {
                        if (sharedpreferences.getBoolean("autoupload",false)){
                            // Upload things.
                        }
                    }
                }
            }
        }

Я благодарен за любую подсказку.

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Использовать контекст вместо getApplicationContext ()

0 голосов
/ 13 февраля 2019

Чтобы получить правильный контекст для SharedPreferences, используйте context.getApplicationContext() внутри onReceive()

0 голосов
/ 13 февраля 2019

Вместо этой строки

SharedPreferences pref = getApplicationContext().getSharedPreferences(mypreference, 0);

Используйте это

SharedPreferences pref = context.getSharedPreferences(mypreference, 0);
...