Wifi切换Android代码中出现错误

Wifi切换Android代码中出现错误,android,android-wifi,Android,Android Wifi,当我按下wifi切换按钮,应用程序停止工作时,我收到了这个错误。它提到用户没有访问wifi状态的权限。问题是它已经在清单文件中声明了 使用的权限: 错误 致命异常:主 进程:com.example.something.callblocker,PID:935 java.lang.SecurityException:WifiService:用户10052和当前进程都没有android.permission.ACCESS\u WIFI\u状态。 位于android.os.Parcel.readEx

当我按下wifi切换按钮,应用程序停止工作时,我收到了这个错误。它提到用户没有访问wifi状态的权限。问题是它已经在清单文件中声明了

使用的权限:


错误

致命异常:主 进程:com.example.something.callblocker,PID:935 java.lang.SecurityException:WifiService:用户10052和当前进程都没有android.permission.ACCESS\u WIFI\u状态。 位于android.os.Parcel.readException(Parcel.java:1472) 位于android.os.Parcel.readException(Parcel.java:1426) 位于android.net.wifi.IWifiManager$Stub$Proxy.getWifiEnabledState(IWifiManager.java:808) 位于android.net.wifi.WifiManager.getWifiState(WifiManager.java:1029) 位于android.net.wifi.WifiManager.isWifiEnabled(WifiManager.java:1041) 在com.example.stamatis.callblocker.powersavings$2.onClick(powersavings.java:55)上 在android.view.view.performClick上(view.java:4438) 在android.widget.CompoundButton.performClick(CompoundButton.java:100)中 在android.view.view$PerformClick.run(view.java:18422) 位于android.os.Handler.handleCallback(Handler.java:733) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:136) 位于android.app.ActivityThread.main(ActivityThread.java:5001) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
在dalvik.system.NativeStart.main(本机方法)

如果发生这种情况,并且您说android.permission.ACCESS\u WIFI\u声明这已经存在于清单中,那么用户只有一种可能明确停止了此权限

检查此故障是否在棉花糖中,即API 23。谷歌已经为用户提供了明确删除app权限的权力

你可以阅读:

唯一的解决方案是在执行切换之前在运行时检查权限。 这就是你可以做到的:

private boolean checkWriteExternalPermission()
{

    String permission = "android.permission.ACCESS_WIFI_STATE";
    int res = getContext().checkCallingOrSelfPermission(permission);
    return (res == PackageManager.PERMISSION_GRANTED);            
}

我对getContext()有一个问题。它说方法无法解决。我该如何解决这个问题。(抱歉,如果这个问题太愚蠢,我还是一个初学者)我想我通过导入getContext解决了这个问题(如果正确的话)但是现在我在checkCallingOrSelfPermission上遇到了一个问题,它说getContext也有同样的问题,它是一个无法解决的方法?如果在活动中,则使用此或活动名称。this。如果在片段中,您可以使用getActivity()而不是getContext()
private boolean checkWriteExternalPermission()
{

    String permission = "android.permission.ACCESS_WIFI_STATE";
    int res = getContext().checkCallingOrSelfPermission(permission);
    return (res == PackageManager.PERMISSION_GRANTED);            
}