2016-09-20 15 views
0

で0を返します。Android 6.0.1では、Samsung S5、WifiManager.getScanResults()は0を返します。ただし、Android 6.0.1のNexus電話ではうまくいきます。 Samsung S5のGPSをオンにすると、有効なスキャン結果リストが返されます。wifiManager.getScanResults()は、Android 6.0.1、Samsung S5

でも、GPSをオンにするのは良い考えではないと思います。ですから、スキャン結果を得るためにgetScanResultsを使用する正しい方法を知りたいのです。

N.B.開発者サイトの指示に従ってACCESS_COARSE_LOCATIONACCESS_FINE_LOCATIONの許可をいただきました。

+0

手動で設定を確認してください! –

+0

重複:http://stackoverflow.com/questions/32151603/scan-results-available-action-return-empty-list-in-android-6-0 – mfruizs2

+1

その質問と重複するとして、あなたがそれを見つける方法は?私はすでに言った "しかし、Android 6.0.1、Nexusの電話で、それはかなりうまくいく"問題は、6.0.1では有効なスキャン結果を返すデバイスもあれば、0を返すデバイスもあるということです。これ以外にも、GPSを有効にしていると述べましたが、これは興味がありません。 @ mfruizs2 –

答えて

1

Googleドキュメントでは、Android 6.0以降、アクセス許可の動作がランタイムに変更されています。権限が必要な機能を使用するには、その権限が以前に付与されているかどうかを最初に確認する必要があります。 checkSelfPermission(permissionString)methodを使用すると、結果が返されます。許可はPERMISSION_GRANTEDまたはPERMISSION_DENIEDです。

許可が与えられていないか、初めての場合は、許可を求める必要があります。ユーザーに付与または拒否するオプションを与える。

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より前のデバイスで実行されている場合、コードを進めると、従来の方法で許可が与えられました。

許可を求めると、ダイアログがユーザーに表示されます。その後

@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(); 
    } 
} 

、あなたは場所サービスがONの場合LocationServices.SettingsApiを使用して、チェックして、このオプションが無効になっている場合は有効にするためにユーザに要求することができます:彼/彼女の応答はとして配信されます。これはPlayサービスLocationSettingsStatusCodes.RESOLUTION_REQUIREDコールバックで可能です。

関連する問題