Projemde bir Haritam var. Wifi yönlendirici konumuna gidiyorum, wifi Listesini tararım ve Operatör2'yi seçip İşaretle'yi seçer.Sonraki başka bir konuma giderim Aynı Önceki İşleç 2'yi toplar (yok), sonra Başka bir yere gidiyorum tekrar tekrar.Aynı wifi operatörü wifi'den nasıl seçilecek?
İlk kez Wifi Operatorunu seçebiliyorum.Sonraki zaman bilmiyorum Önceki seçilmiş Operatör detaylarını kilitleme ve operatör detaylarını tekrar alma. Lütfen bu sorunu nasıl düzelteceğime bakın.
Benim Kod:
public class WifiReceiver extends BroadcastReceiver {
private WifiManager wifiManager;
private PlanMapperActivity viewerActivity;
private Context newContext;
private String operator;
private String macAddress;
private int signalStrength;
private String wifiMode;
private int frequency;
private String htMode;
private String security;
private int channelNumber;
private AlertDialog wifiAlertDialog;
private ListView wifiListView;
private ProgressDialog progress;
private Boolean checkWifiSelected;
private Boolean checkServayStart;
private String operatorName;
List<ScanResult> wifiSRList;
private static final String WPA2 = "WPA2";
private static final String WEP = "WEP";
private static final String EAP = "EAP";
private static final String STORED_OPERATOR = "com.kenturf.wifiheatmap.SELECTED_OPERATOR";
private int requiredLevel;
private int ssidCount;
public WifiReceiver(Context ctx,PlanMapperActivity planMapper) {
this.viewerActivity = planMapper;
this.newContext = ctx;
}
public WifiReceiver(WifiManager myWifiManager,ProgressDialog wifiProgress,Boolean isWifiSelected,Boolean isSurveyStart) {
this.wifiManager = myWifiManager;
this.progress = wifiProgress;
this.checkWifiSelected = isWifiSelected;
this.checkServayStart = isSurveyStart;
}
@Override
public void onReceive(final Context context, Intent intent) {
wifiSRList = wifiManager.getScanResults();
if (wifiSRList.size() == 0) {
Toast.makeText(context,"wifi List 0",Toast.LENGTH_SHORT).show();
}
if (checkWifiSelected) {
LayoutInflater wifiLayout = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View wifiView = wifiLayout.inflate(R.layout.dialog_fragment_wifi,null);
AlertDialog.Builder wifiDialog = new AlertDialog.Builder(context);
wifiDialog.setCancelable(false);
wifiDialog.setView(wifiView);
wifiAlertDialog = wifiDialog.create();
wifiListView = (ListView)wifiView.findViewById(R.id.user_wifi_detail);
}
Collections.sort(wifiSRList, new Comparator<ScanResult>() {
@Override
public int compare(ScanResult lhs, ScanResult rhs) {
return (lhs.level > rhs.level ? -1 : (lhs.level == rhs.level ? 0 : 1));
}
});
if (checkWifiSelected) {
String[] wifiListString = new String[wifiSRList.size()];
for (int i = 0; i < wifiSRList.size(); i++) {
wifiListString[i] = (wifiSRList.get(i).SSID);
}
wifiListView.setAdapter(new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, wifiListString));
wifiAlertDialog.show();
progress.dismiss();
wifiListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
operator = wifiSRList.get(position).SSID;
macAddress = wifiSRList.get(position).BSSID;
signalStrength = wifiSRList.get(position).level;
frequency = wifiSRList.get(position).frequency;
final String cap = wifiSRList.get(position).capabilities;
final String[] securityModes = {WEP, WPA2, EAP};
for (int i = securityModes.length - 1; i >= 0; i--) {
if (cap.contains(securityModes[i])) {
security = securityModes[i];
}
}
setOperator(operator);
GetSetClass.wifiOperator = operator;
/* error start ..cannot resolved method getPreferences() */
SharedPreferences sharedPref = context.getPreferences(Context.MODE_PRIVATE); // error line
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(STORED_OPERATOR, operator);
editor.apply();
/* error end */
operatorName = operator;
setMacAddress(macAddress);
setSignalStrength(signalStrength);
setFrequency(frequency);
setSecurity(security);
setChannelNumber(convertFrequencyToChannel(frequency));
wifiAlertDialog.dismiss();
checkWifiSelected = false;
}
});
}
if(checkServayStart) {
/* error start ..cannot resolved method getPreferences()*/
SharedPreferences shPref = context.getPreferences(Context.MODE_PRIVATE); // error line
String savedOperator = shPref.getString(STORED_OPERATOR,null);
Log.e("operator : ", "saved operator is : " + savedOperator);
/* error end */
if (wifiSRList != null) {
ssidCount = wifiSRList.size();
for(int i = wifiSRList.size() - 1; i >= 0; i--) {
if (GetSetClass.wifiOperator.equals(wifiSRList.get(i).SSID)) {
String requiredOperator = wifiSRList.get(i).SSID;
requiredLevel = wifiSRList.get(i).level;
context.unregisterReceiver(this);
AlertDialog.Builder myBuilder = new AlertDialog.Builder(context);
setRequiredLevel(requiredLevel);
myBuilder.setTitle("Current Signal");
myBuilder.setMessage("Operator : " + requiredOperator + " \n\nSignal Strength : " + requiredLevel + " dBm");
myBuilder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
myBuilder.show();
} else {
Toast.makeText(context,"Operator Mismatch",Toast.LENGTH_SHORT).show();
}
}
progress.dismiss();
}
}
}
public static int convertFrequencyToChannel(int freq) {
if (freq >= 2412 && freq <= 2484) {
return (freq - 2412)/5 + 1;
} else if (freq >= 5170 && freq <= 5825) {
return (freq - 5170)/5 + 34;
} else {
return -1;
}
}
}
GÜNCELLEME CEVAP: SharedPreferences için
private static final String STORED_FILE = "com.package.name.SELECTED_FILE";
private static final String STORED_OPERATOR = "com.package.name.SELECTED_OPERATOR";
kaydet veriler:
SharedPreferences sharedPref = context.getSharedPreferences(STORED_FILE,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(STORED_OPERATOR, operator);
editor.apply();
SharedPreferences verileri alın: Eğer (varsa) kullanıcının daha önce seçtiği ağ Fi'nizi neyi ısrarlı bir mekanizmadır gerekenleri ben doğru anlamak
SharedPreferences shPref = context.getSharedPreferences(STORED_FILE,Context.MODE_PRIVATE);
String savedOperator = shPref.getString(STORED_OPERATOR,null);
Log.e("operator : ", "saved operator is : " + savedOperator);
Cevabım size yardımcı oldu mu? Değilse, lütfen cevaba bir yorum bırakarak nedenini açıklayın. –
Etkinliğin dışında bir SharedPreferences tutmanıza yardımcı olmak için yanıtı güncelleştirin. Umarım yardımcı olur. –