我的问题是我需要来自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.
}
}
}
}
}
我很感激任何暗示。
而不是这条线
SharedPreferences pref = getApplicationContext().getSharedPreferences(mypreference, 0);
用这个
SharedPreferences pref = context.getSharedPreferences(mypreference, 0);
使用context而不是getApplicationContext()
要获得SharedPreferences的正确上下文,请在context.getApplicationContext()
中使用onReceive()