【问题标题】:Get SharedPreferences inside an intent在意图中获取 SharedPreferences
【发布时间】:2019-02-13 12:18:06
【问题描述】:

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

很遗憾,我无法在此context 中获取shared preferences,因为无法解析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.
                        }
                    }
                }
            }
        }

感谢任何提示。

【问题讨论】:

  • inside an intent 你的意思是在onReceive 方法里面,对吧?
  • getApplicationContext and getSharedPreferences can not be resolved 那是因为Java中的每个方法都属于某个类。如果不直接调用类,则从this类调用。而在你的情况下,BroadcastReceiver ,即this,没有这些方法。
  • 为什么你不使用 onReceive 方法上下文它给你上下文

标签: android android-intent sharedpreferences android-broadcast


【解决方案1】:

代替这一行

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

使用这个

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

【讨论】:

    【解决方案2】:

    使用上下文而不是 getApplicationContext()

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多