You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android12中使用Settings.ACTION_WIFI_ADD_NETWORKS结合startActivityForResult时应用崩溃

Xamarin Android Android 12添加WiFi配置随机崩溃问题

问题详情

使用Xamarin Android开发,目标框架为Android 12,通过以下代码保存WiFi网络配置时,在Android 12设备上频繁出现随机崩溃,崩溃时VS2022调试器仍保持连接。

代码实现

private void AddWifi(string ssid, string psk)
{
    var suggestions = new List<IParcelable>
    {
        new WifiNetworkSuggestion.Builder()
                .SetSsid(ssid)
                .SetWpa2Passphrase(psk)
                .Build()
    };
    var bundle = new Bundle();
    bundle.PutParcelableArrayList(ExtraWifiNetworkList, suggestions);
    var intent = new Intent(ActionWifiAddNetworks);
    intent.PutExtras(bundle);
    MainActivity.Instance.StartActivityForResult(intent, RequestCodeConstants.WifiRequestCode);
}

日志信息

Visual Studio输出

[DecorView[]] onWindowFocusChanged hasWindowFocus false
[tWriterEnhance] Explicit concurrent copying GC freed 119792(5287KB) AllocSpace objects, 5(164KB) LOS objects, 24% free, 5230KB/6974KB, paused 91us,85us total 54.456ms
[Activity] PerfMonitor: Slow Operation: Activity com.packagename/crc647e3ada291cd56112.MainActivity onDestroy took 627ms
[Choreographer] Skipped 61 frames!  The application may be doing too much work on its main thread.
[Looper] PerfMonitor doFrame : time=0ms vsyncFrame=0 latency=683ms procState=-1 historyMsgCount=2 (msgIndex=2 wall=671ms seq=47927 late=20ms h=android.app.ActivityThread$H w=159)

Android Studio Logcat日志

getRecentTasks: taskId=925   userId=0   baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.packagename/crc647e3ada291cd56112.MainActivity }
2023-03-09 21:50:10.680  1784-12912 ActivityTaskManager     system_server                        W    Force finishing activity com.packagename/crc647e3ada291cd56112.MainActivity
2023-03-09 21:50:11.859  7578-7578  tWriterEnhance          com...Inc.packagename  I  Explicit concurrent copying GC freed 119792(5287KB) AllocSpace objects, 5(164KB) LOS objects, 24% free, 5230KB/6974KB, paused 91us,85us total 54.456ms
2023-03-09 21:50:11.986  7578-7578  Activity                com...Inc.packagename  W  PerfMonitor: Slow Operation: Activity com.packagename/crc647e3ada291cd56112.MainActivity onDestroy took 627ms
2023-03-09 21:50:11.997  1784-12916 InputManager-JNI        system_server                        W  Input channel object '22029a1 com.packagename/crc647e3ada291cd56112.MainActivity (client)' was disposed without first being removed with the input manager!
2023-03-09 21:50:12.008  7578-7578  Choreographer           com...Inc.packagename  I  Skipped 61 frames!  The application may be doing too much work on its main thread.
2023-03-09 21:50:12.009  7578-7578  Looper                  com...Inc.packagename  W  PerfMonitor doFrame : time=0ms vsyncFrame=0 latency=683ms procState=-1 historyMsgCount=2 (msgIndex=2 wall=671ms seq=47927 late=20ms h=android.app.ActivityThread$H w=159)
2023-03-09 21:50:16.005  3068-3393  ActivityManagerWrapper  com.miui.home                        E  getRecentTasks: taskId=925   userId=0   baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.packagename

解决方案

  1. 权限检查与申请:确保已动态申请ACCESS_FINE_LOCATION、CHANGE_WIFI_STATE、ACCESS_WIFI_STATE权限,Android 12添加WiFi网络需这三项权限,且必须动态获取。
  2. 替换API:放弃使用ActionWifiAddNetworks Intent方式,改用Android 12推荐的WifiManager.AddNetworkSuggestions API,该API兼容性更好,能避免系统层面的崩溃问题。
  3. 上下文优化:避免使用MainActivity.Instance单例启动Intent,改用当前Activity的上下文(如this或Activity.Current),防止Activity销毁后引用无效上下文导致崩溃。
  4. 主线程优化:日志显示主线程存在卡顿,将WiFi配置相关操作移至后台线程执行,减少主线程负载。

内容的提问来源于stack exchange,提问作者Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:08:10