die Berechtigung für den Zugriff auf WIFI in android 6
Ich bin neu in android studio, ich war früher funktioniert auf android-version 5.1 für meine app und es funktionierte gut, aber jetzt in der 6 ich bin nicht in der Lage, die Erlaubnis bekommen, oder ich bin nicht sicher, ob meine Methode ist falsch. Ich mache eine app, die verwendet die Liste der access points für mein Handy. Aber auch wenn ich die Berechtigung meiner app nicht, zeigen Sie mir die WLAN-Liste, aber der gleiche code funktioniert auch für frühere Versionen.
Mainactivity:
package com.wiferange.wifi_test;
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ListView lv;
String lists[]={"a","b"};
WifiManager wifi;
String wifis[];
WifiScanReceiver wifiReciever;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
lv = (ListView)findViewById(R.id.listView);
wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
getPermission();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
protected void onPause() {
unregisterReceiver(wifiReciever);
super.onPause();
}
protected void onResume() {
registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
private void getPermission() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.ACCESS_WIFI_STATE},0x12345);
//lv.setAdapter(new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,lists));
//After this point you wait for callback in onRequestPermissionsResult(int, String[], int[]) overriden method
}else{
wifi.startScan();
//do scanning, permission was previously granted; or legacy device
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { //funcitno executes when some permission was granted
if (requestCode == 0x12345) {
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) { //check if permission was already grnated and start scannig if yes
wifi .startScan() ;
return;
}
}
getPermission(); //ask for permission if not given
}
}
private class WifiScanReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = wifi.getScanResults();
wifis = new String[wifiScanList.size()];
for(int i = 0; i < wifiScanList.size(); i++){
wifis[i] = ((wifiScanList.get(i)).toString());
}
lv.setAdapter(new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,wifis));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Handle action bar item clicks here. The action bar will
//automatically handle clicks on the Home/Up button, so long
//as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wiferange.wifi_test">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Freundlicherweise mir helfen, diese zu lösen . Vielen Dank im vorraus!!!!!!!
- Haben Sie versuchen, hinzufügen <uses-permission android:name="android.die Genehmigung.INTERNET" /> und <uses-permission android:name="android.die Genehmigung.ACCESS_NETWORK_STATE" /> in Ihrem manifest anderen als die angegebenen Berechtigungen?
- Es funktioniert nicht, da mein compiler nicht einmal meine Erlaubnis bekommen-Methode
InformationsquelleAutor Azhagan Raviraj | 2016-10-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fordern Sie die falsche Laufzeit Berechtigung. Wie pro die Android 6.0 änderungen:
Müssen Sie den Antrag und erteilt eine dieser Berechtigungen für die Laufzeit zu tun wifi durchsucht.
müssen Sie sich die Berechtigungen, wenn das im automatisch die Berechtigung list oder in Gefährlichen Berechtigungsliste. wenn das war Gefährlich Berechtigungsliste so, als Sie brauchen, Laufzeit Berechtigung wie android-M.
einfach gehen, obwohl dieser link, die Sie anfordern, die falsche Laufzeit Berechtigung. ACCESS_WIFI_STATE Berechtigung wird automatisch gewährt Berechtigungen nicht zugreifen zu können, müssen Sie Laufzeit.
Ich denke, das ist, was Sie brauchen.
Anwendung (WiFi-verbindungen) funktioniert nicht mehr auf Android 6.0 Marshmallow