Die permissionsList.add() funktioniert nicht, aber MainActivity.this.requestPermissions() funktioniert einwandfrei. Das Problem besteht darin, dass ein Dialogfeld angezeigt wird, in dem Sie gefragt werden, ob der Benutzer die Standortberechtigung zulässt.Android 6.0.1 - Berechtigungsproblem = wifiManager.getScanResults() gibt 0
Warum das Hinzufügen der Berechtigung nicht funktioniert?
Gibt es eine Möglichkeit, das Dialogfeld zu vermeiden?
Siehe mein minimaler Code unten:
public class MainActivity extends AppCompatActivity {
WifiManager wifiManager;
WifiBroadcastReceiver broadcastReceiver;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
List<String> permissionsList = new ArrayList<String>();
permissionsList.add(Manifest.permission.ACCESS_FINE_LOCATION);
permissionsList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
MainActivity.this.requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 100);
MainActivity.this.requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 100);
}
}
Button scan = (Button) findViewById(R.id.scan);
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
scan.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(wifiManager != null)
wifiManager.startScan();
}
});
broadcastReceiver = new WifiBroadcastReceiver();
// On attache le receiver au scan result
registerReceiver(broadcastReceiver, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
public class WifiBroadcastReceiver extends BroadcastReceiver {
private WifiManager wifiManager;
@Override
public void onReceive(Context context, Intent intent) {
wifiManager = ((MainActivity) context).getCurrentWifiManager();
List<ScanResult> listeScan = wifiManager.getScanResults();
}
}
public WifiManager getCurrentWifiManager() {
return wifiManager;
}
}
Und hier ist der manifest.xml:
Dieses verstanden wird. Aus diesem Grund füge ich die Berechtigungen am Anfang des Codes hinzu. Das hat nicht funktioniert. Nur die Anfrageberechtigung funktioniert. Der Nachteil ist das Dialogfeld, in dem der Benutzer aufgefordert wird, die Berechtigungen zuzulassen/zu verweigern. – narb
Soweit ich weiß, gibt es keine Arbeit in Bezug auf das Dialogfeld. –
RE-lesen Sie Ihren Punkt, das ist nur die Wahl der Anfrage und nicht hinzufügen. Warum gibt es eine Add-Methode? Es sieht für mich so aus, dass ich mich bei der Installation einer App mit einer Kamera bei der Installation erkundige. Ist der Standort besonders? Ich lese das Dokument erneut. – narb