第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

SCAN_RESULTS_AVAILABLE_ACTION在Android 6.0中返回空列表

SCAN_RESULTS_AVAILABLE_ACTION在Android 6.0中返回空列表

溫溫醬 2019-11-14 15:17:05
昨天,我的Nexus 5收到了更新Android MNC到的版本6.0 - Marshmallow。從那時(shí)起,掃描設(shè)備中可用網(wǎng)絡(luò)的操作將停止接收列表,在這種情況下,即使Wifi系統(tǒng)設(shè)置中列出了10個(gè)以上的Wifi網(wǎng)絡(luò),結(jié)果列表的大小也為0。這是通常的代碼:SCAN_RESULTS_AVAILABLE_ACTION在Receiver中注冊(cè)并等待事件,如下所示:// Register the Receiver in some part os fragment...getActivity().registerReceiver(wifiListener, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));WifiManager wifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);wifiManager.startScan();// Inside the receiver:WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);List<ScanResult> results = wifiManager.getScanResults();// the result.size() is 0 after update to Android v6.0, same code working in older devices.我搜索了有關(guān)此主題的API主題的更改,但沒有看到此功能的任何重大更改。有人注意到嗎?API中有新內(nèi)容還是僅是個(gè)別情況?
查看完整描述

3 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

從Android 6.0開始,權(quán)限行為已更改為運(yùn)行時(shí)。要使用需要許可的功能,應(yīng)首先檢查該許可是否先前已授予。使用checkSelfPermission(permissionString) 方法返回結(jié)果,而權(quán)限為PERMISSION_GRANTED或PERMISSION_DENIED。


如果未授予許可或這是第一次,則應(yīng)提出許可請(qǐng)求。向用戶提供授予或拒絕的選項(xiàng)。


if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){

   requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},

                 PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION);

    //After this point you wait for callback in onRequestPermissionsResult(int, String[], int[]) overriden method


}else{

    getScanningResults();

   //do something, permission was previously granted; or legacy device

}

如果您的代碼在M之前的設(shè)備上運(yùn)行,則繼續(xù)執(zhí)行代碼,使用舊方法授予權(quán)限。


一旦請(qǐng)求許可,對(duì)話框?qū)@示給用戶。他/她的答復(fù)將作為:


@Override

 public void onRequestPermissionsResult(int requestCode, String[] permissions,

         int[] grantResults) {

     if (requestCode == PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION

             && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

         // Do something with granted permission

        mWifiListener.getScanningResults();

     }

 }

之后,您可以檢查定位服務(wù)是否打開,使用LocationServices.SettingsApi并請(qǐng)求用戶啟用(如果此選項(xiàng)被禁用)。Play服務(wù)LocationSettingsStatusCodes.RESOLUTION_REQUIRED回調(diào)可以做到這一點(diǎn)。


查看完整回答
反對(duì) 回復(fù) 2019-11-14
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

我在AOSP問題跟蹤器問題185370中發(fā)現(xiàn)了相關(guān)問題,如果GPS關(guān)閉,則WifiManager#getScanResults()返回一個(gè)空數(shù)組列表。


問題從#1提到,手機(jī)必須打開定位服務(wù)才能獲取手機(jī)的wifi列表。


從#18開始,Android項(xiàng)目成員聲稱開發(fā)團(tuán)隊(duì)已修復(fù)您報(bào)告的問題,并將在以后的版本中提供。


APP位于targetSdkVersion 23中,只需按照上述解決方案檢查運(yùn)行時(shí)權(quán)限即可。強(qiáng)制啟用位置服務(wù)問題將在Android未來版本中修復(fù)。


查看完整回答
反對(duì) 回復(fù) 2019-11-14
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊

因此,問題似乎出在新的權(quán)限處理上。您必須先獲得許可,然后才能進(jìn)入wifi代碼。這是一個(gè)例子:


// call this method only if you are on 6.0 and up, otherwise call doGetWifi()

private void getWifi() {

    if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 0x12345);

    } else {

        doGetWifi(); // the actual wifi scanning

    }

}


@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

    if (requestCode == 0x12345) {

        for (int grantResult : grantResults) {

            if (grantResult != PackageManager.PERMISSION_GRANTED) {

                return;

            }

        }

        getWifi();

    }

}

此檢查必須在活動(dòng)中完成。


原始示例代碼在此處可用,并根據(jù)本主題中討論的問題進(jìn)行了修改。


原版的

根據(jù)API的鏈接更改,您的應(yīng)用程序必須具有位置權(quán)限之一。引用:


WifiManager.getScanResults():您的應(yīng)用程序必須具有ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION權(quán)限。


另外請(qǐng)注意,您的BroadcastReceiver在執(zhí)行操作時(shí)收到了一個(gè)新的布爾鍵SCAN_RESULTS_AVAILABLE_ACTION:EXTRA_RESULTS_UPDATED。這顯示掃描是否完成,您可以通過調(diào)用來訪問結(jié)果wifiManager.getScanResults()。


查看完整回答
反對(duì) 回復(fù) 2019-11-14
  • 3 回答
  • 0 關(guān)注
  • 1934 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)