Je reçois cette erreur après que j'essaye de mettre à jour mes compileSdkVersion etTargetSdkversion plus grand que 22. On dirait que je fais n'importe quelle tâche d'interface graphique dans ma méthode doInBackground mais je suis incapable de comprendre. Je serais très reconnaissant pour une solution.FATAL EXCEPTION: java.lang.SecurityException: besoin autorisation ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION
Ceci est ma trace de la pile:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: xy.abc.xyz.xy, PID: 15246
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.SecurityException: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan results
at android.os.Parcel.readException(Parcel.java:1599)
at android.os.Parcel.readException(Parcel.java:1552)
at android.net.wifi.IWifiManager$Stub$Proxy.getScanResults(IWifiManager.java:1066) at android.net.wifi.WifiManager.getScanResults(WifiManager.java:1311)
at xy.abc.xyz.xy.config.WlanInfoAdapter.getNewItems(WlanInfoAdapter.java:72)
at xy.abc.xyz.xy.android.data.ChangeableArrayAdapter$1.doInBackground(ChangeableArrayAdapter.java:78)
at xy.abc.xyz.xy.android.data.ChangeableArrayAdapter$1.doInBackground(ChangeableArrayAdapter.java:74)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Méthode dans la classe WlanInfoAdapter.java:72 est ici:
@Override
protected List<WlanInfo> getNewItems() {
WifiManager wifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
List<ScanResult> scanResults = wifiManager.getScanResults();
List<WlanInfo> infoList = new ArrayList<>(scanResults.size());
WifiInfo connectionInfo = wifiManager.getConnectionInfo();
try {
List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();
Map<String, WifiConfiguration> configuredNetworkIds = new HashMap<>();
for (WifiConfiguration configuredNetwork : configuredNetworks) {
if (configuredNetwork.SSID != null) {
configuredNetworkIds.put(WlanInfo.cleanSSID(configuredNetwork.SSID), configuredNetwork);
} else {
wifiManager.removeNetwork(configuredNetwork.networkId);
}
}
for (ScanResult scanResult : scanResults) {
WlanInfo wlanInfo = new WlanInfo(scanResult);
WifiConfiguration configuration = configuredNetworkIds.get(wlanInfo.getSSID());
wlanInfo.setConfiguration(configuration);
wlanInfo.setIsActive(configuration != null && configuration.networkId == connectionInfo.getNetworkId());
if (showUnknown || wlanInfo.isConfigured() || wlanInfo.isOpen()) {
infoList.add(wlanInfo);
}
}
}
catch (Exception e) { e.printStackTrace(); return null; }
return infoList;
}
Méthode erreur montrant classe changeableArrayAdapter.java est donnée ci-dessous. sa méthode où getNewItems() est appelée: ChangeableArrayAdapter.java:78 ChangeableArrayAdapter.java:74
public void triggerRefresh() {
AsyncTask<Void, Void, List<T>> asyncTask = new AsyncTask<Void, Void, List<T>>() {
@Override
protected List<T> doInBackground(Void... objects) {
return getNewItems();
//return null;
}
Merci pour votre explication complète. Je voudrais savoir si je devrais faire LOCATION_PERMISSION_REQUEST_CODE dernière variable staic et mettre sa valeur à 1 ?? – LanguageMaster
@LanguageMaster oui, c'est exactement ce que c'est –
Vous êtes géniaux Mannn. Tu as fait ma journée. Merci beaucoup ..son travail – LanguageMaster