各位大哥大姐們好
小弟最近在研究如何將手機連線到的BSSID抓下來,再上傳至資料庫中,與資料庫中既有的名單做比對,之後再回傳正確與否的結果給手機。
目前的作業系統是android studio,也寫出了獲取BSSID的程式碼,也建好了名單,但在如何上傳的問題,和比對的方式,糾結很久。
目前我獲取BSSID的語法是這樣(參考網路資料):
TextView textView;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_getbssid);
textView = findViewById(R.id.mybssid);
WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
textView.setText("" + wifiInfo.getBSSID());
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onResume() {
super.onResume();
}
由於小弟是程式語言的極度菜鳥,爬了許多文都沒有明確的建議或方向,在此跪求大大們給予小弟一盞明燈,該如何著手?
謝謝大家!
我沒看到你所謂上傳的部分,
一般來說如果你要做這件事應該是PHP那邊要開API,
由PHP來比對,
手機端只要做 傳資料 跟 抓資料 的動作就好了.
我盡力盲code我網路上看到的東西和我知道的內容,但自己對於"把字串上傳"的流程邏輯仍不明瞭,還請不吝指教,謝謝!
private static String URL = "https://wifine.000webhostapp.com/GetData.php", KEY = "uploaded_file";
private String compare;
private AsyncHttpClient httpClient;
private Context context;
private RequestParams params;
protected void upload(Context context) {
setContentView(R.layout.activity_comparison);
this.context = context;
httpClient = new AsyncHttpClient();
params = new RequestParams();
WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
String compare = new String(String.valueOf(wifiInfo));
upload(Comparison.this);
Log.w("LOG", "file exist: " + StringExist());
}
public boolean StringExist(){
if(compare.exists())
return true;
else
return false;
}
如果是用我的方法可能會有幾個階段
如果是初學者的話,
可以先學1跟3的部分,
或是你也可以使用手機的本地端資料庫(但就不能共用)來處理這件事.
如果1~3全部要做你可能還要學很多東西.
如果需要更進一步的內容,
可以要看你目前的進度以及遇到的問題來做回饋了.
拿這篇的 Example去改
你要做的事情是
1.將手機連線到的BSSID抓下來(一個字串)
2.再上傳至資料庫中
3.與資料庫中既有的名單做比對
4.之後再回傳正確與否的結果給手機。
上面那篇的 Example 做的事情是
1.手動輸入帳號與密碼(兩個字串)
2.再上傳至資料庫中
3.與資料庫中既有的名單做比對
4.之後再回傳正確與否的結果給手機。
是不是很像?
選我正解
謝謝您的幫助及回應。
我們照著上面您提供的程式碼跑過一遍,也用這個程式碼跑過我們自己的php和網頁的php,但不知為何結果不如預期,會有比對結果錯誤(結果永遠是login success)。
不知道問題是出在java還是php?
[https://ithelp.ithome.com.tw/upload/images/20191116/20122799GtITXNlnKb.jpg]
![https://ithelp.ithome.com.tw/upload/images/20191116/20122799fkUF76P25q.jpg]
因為以下這段寫的
@Override
protected void onPostExecute(String result){
this.statusField.setText("Login Successful");
this.roleField.setText(result);
}
onPostExecute()顧名思義就是在「post之後執行」的程式
裡面結果永遠會顯示Login Successful
差別在 role Field 顯示的值
如果一切都順利,用 admin/admin 登入應該會顯示administrator
不然就是少了什麼步驟