当我运行脚本“WifiManager.isWifiEnable”时,我的即时应用程序崩溃
Caused by: java.lang.SecurityException: Method class android.net.wifi.IWifiManager$Stub$Proxy.getWifiEnabledState[] not available to instant apps
at android.os.Parcel.readException(Parcel.java:1620)
at android.os.Parcel.readException(Parcel.java:1573)
at com.google.android.instantapps.supervisor.ipc.base.MethodInvocationProxy.readReply(MethodInvocationProxy.java:238)
at com.google.android.instantapps.supervisor.ipc.base.MethodInvocationProxy.invoke(MethodInvocationProxy.java:472)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy15.getWifiEnabledState(Unknown Source)
at android.net.wifi.WifiManager.getWifiState(WifiManager.java:1459)
at android.net.wifi.WifiManager.isWifiEnabled(WifiManager.java:1471)
最佳答案
WifiManager
此类提供用于管理 Wi-Fi 连接各个方面的主要 API。
它定义了在 Wi-Fi 状态发生任何变化时广播的各种 Intent 操作的名称。
必须使用 Context.getSystemService(Class)
与参数 WifiManager.class
或 Context.getSystemService(String)
与参数Context.WIFI_SERVICE
。
setWifiEnabled
需要 CHANGE_WIFI_STATE
这是执行 Wi-Fi 特定操作时使用的 API。要在抽象级别执行与网络连接相关的操作,请使用 ConnectivityManager
。
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
您将需要:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
我们只能使用限制为 Instant permissions 的 API 方法
- 计费
- ACCESS_COARSE_LOCATION
- ACCESS_FINE_LOCATION
- ACCESS_NETWORK_STATE
- 相机
- INSTANT_APP_FOREGROUND_SERVICE 仅适用于 Android 8.0。
- 互联网READ_PHONE_NUMBERS。这个权限是 仅适用于 Android 8.0(API 级别 26)。
- RECORD_AUDIO VIBRATE
关于android - 使用 WiFi 时即时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48000790/