Да, я посмотрел на все другие подобные вопросы, но они не работают для меня. Я пытаюсь сканировать все точки доступа рядом со мной. Этот точный код работает для Android 10, но в Android 6.0, в частности в Galaxy J5, getScanResult () всегда возвращает пустое значение, код:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_alunos);
setTitle(TITULO_APPBAR);
listaAlunosView = new ListaAlunosView(this);
configuraFabNovoAluno();
configuraLista();
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
//Check for permissions
if ((ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED)
|| (ContextCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE)
!= PackageManager.PERMISSION_GRANTED))
{
Log.i("TAG", "Requesting permissions");
//Request permission
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CHANGE_WIFI_STATE,
Manifest.permission.ACCESS_NETWORK_STATE},
123);
}
else
Log.i("TAG", "Permissions already granted");
wifiScan();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
Log.i("TAG,", "onRequestPermissionsResult");
switch (requestCode)
{
case 123:
{
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
// permission was granted
Log.i("TAG", "permission granted: " + permissions[0]);
}
else
{
// permission denied, boo! Disable the
// functionality that depends on this permission.
Log.i("TAG", "permission denied: " + permissions[0]);
}
return;
}
// other 'case' lines to check for other
// permissions this app might request.
}
}
private void wifiScan() {
wifiManager.startScan();
BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean success = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false);
if(success) {
List<ScanResult> scanResults = wifiManager.getScanResults();
Log.i("SCAN RESULT:", "" + scanResults);
} else {
}
}
};
Android Манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="br.com.alura.agenda"
tools:ignore="GoogleAppIndexingWarning">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="AllowBackup">
<activity android:name=".ui.activity.ListaAlunosActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ui.activity.FormularioAlunoActivity" />
</application>
</manifest>
Я также включил свои службы определения местоположения.
Может кто-нибудь сказать мне, где ошибка?