在intent中获取SharedPreferences

问题描述 投票:0回答:3

我的问题是我需要来自shared Preferencesintent的信息。每次无线网络存在的意图是发送我想检查我的应用程序中是否选择了自动上传,以防它触发操作。

不幸的是,我无法在这个shared preferences得到context,因为getApplicationContextgetSharedPreferences无法解决。

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.
                        }
                    }
                }
            }
        }

我很感激任何暗示。

android android-intent sharedpreferences android-broadcast
3个回答
0
投票

而不是这条线

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

用这个

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

0
投票

使用context而不是getApplicationContext()


0
投票

要获得SharedPreferences的正确上下文,请在context.getApplicationContext()中使用onReceive()

© www.soinside.com 2019 - 2024. All rights reserved.