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
コールバックで可能です。
手動で設定を確認してください! –
重複:http://stackoverflow.com/questions/32151603/scan-results-available-action-return-empty-list-in-android-6-0 – mfruizs2
その質問と重複するとして、あなたがそれを見つける方法は?私はすでに言った "しかし、Android 6.0.1、Nexusの電話で、それはかなりうまくいく"問題は、6.0.1では有効なスキャン結果を返すデバイスもあれば、0を返すデバイスもあるということです。これ以外にも、GPSを有効にしていると述べましたが、これは興味がありません。 @ mfruizs2 –