带有后台工作管理器的 Andorid 10 中的 getSSID

问题描述

我开发了一个应用程序,它会定期收集有关设备的一些数据并将它们发送到灰色日志。其中一项数据是所连接wifi的名称

只要应用程序处于打开状态,它就可以正常工作。当应用程序关闭并且只有 Workmanager 正在运行时,我总是将“未知 ssid”作为连接的 Wifi。

有人知道,为什么应用程序只能在应用程序打开时访问wifi名称?或者 WorkManager 如何访问它?

WorkManager 定义为

        PeriodicWorkRequest uploadWorkRequest =
            new PeriodicWorkRequest.Builder(StatusUpdateWorker.class,15,TimeUnit.MINUTES)
                    .addTag("monitoring")
                    .build();

    WorkManager
            .getInstance(getApplicationContext())
            .enqueueUniquePeriodicWork("monitoring",ExistingPeriodicWorkPolicy.REPLACE,uploadWorkRequest);

wifi被访问

WifiManager wifiManager = (WifiManager) applicationContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.getConnectionInfo().getSSID();

在 androidmanifest.xml 中我设置了以下权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)