【发布时间】:2019-02-13 12:18:06
【问题描述】:
我的问题是我需要来自shared Preferences 的intent 中的信息。
每次发送存在无线网络的意图时,我都想检查是否选择了我的应用中的自动上传,以防触发操作。
很遗憾,我无法在此context 中获取shared preferences,因为无法解析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.
}
}
}
}
}
感谢任何提示。
【问题讨论】:
-
inside an intent你的意思是在onReceive方法里面,对吧? -
getApplicationContext and getSharedPreferences can not be resolved那是因为Java中的每个方法都属于某个类。如果不直接调用类,则从this类调用。而在你的情况下,BroadcastReceiver,即this,没有这些方法。 -
为什么你不使用 onReceive 方法上下文它给你上下文
标签: android android-intent sharedpreferences android-broadcast