android - 使用 WiFi 时即时应用程序崩溃

标签 android wifi aidl android-instant-apps android-binder

当我运行脚本“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.classContext.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/

相关文章:

java - 由于 java 文件中的 "missing"Parcelable 类,Android Studio/Gradle 无法构建

android - Parcelable 可以包含 AIDL 接口(interface)吗?

java - 如何将数组列表从 Activity 发送到另一个 Activity ,而不访问其他 Activity

android - 在android中读取远程xml文件

android - 动态壁纸没有收到 ACTION_MOVE 事件?

android - Android 设备上保存的网络是否有唯一标识符?

android - 在android中检测连接是wifi、3G还是EDGE?

android - 如何更改 NavigationView 的项目文本大小?

android - 如何使用专用 ssid 和密码在 Android 中为 Wifi Direct 创建自主 GO?

Android Couchdb - libcouch 和 IPC Aidl 服务