簡體   English   中英

如何在Android棉花糖上獲取wifi掃描結果?

[英]How to get wifi scan result on android marshmallow?

我想在棉花糖設備上獲得wifi掃描結果。
首先,我所在的地區有很多wifi AP。
如果在棉花糖設備上獲得wifi掃描結果。 添加ACCESS_COARSE_LOCATION權限。

我的來源

@Override
public void onClick(View v) { 

        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
            int permissionResult = checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION);

            if (permissionResult == PackageManager.PERMISSION_DENIED) {

                if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_COARSE_LOCATION)) {
                    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                    dialog.setTitle("need permission")
                            .setMessage("permission grant?")
                            .setPositiveButton("yes", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                        requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1000);
                                    }
                                }
                            }).setNegativeButton("no", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "cancel", Toast.LENGTH_LONG).show();
                        }
                    }).create().show();

                } else {
                    requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1000);
                }
            } else {
                result = getScanWifiResult();
            }

    }
}


@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == 1000) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                Log.d(TAG, "request permission");
                result = mUtils.getScanWifiResult();
            }
        } else {
            Toast.makeText(MainActivity.this, "permission denied", Toast.LENGTH_LONG).show();
        }
    }
}



public List<String> getScanWifiResult() {
    List<ScanResult> result;
    mWifiManager.startScan(); // service register
    result = mWifiManager.getScanResults();
    ArrayList<String> ssid = new ArrayList<String>();
    if (result != null) {
        for (ScanResult scan : result) {
             ssid.add(scan.SSID);
        }
    } 
    return ssid;
  }

如果該源位於棉花糖設備或23之上的gradle targetSdkVersion ,則wifi掃描結果為空,但對於21之下的kitdle設備或grakat裝置的gradle targetSdkVersion無效。
wifi掃描結果很多wifi ap。

為什么wifi掃描結果在棉花糖設備上為空?

因為您在if(permission == denied)else語句中調用它

您的result = getScanWifiResult()應該在權限if-else語句之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM