在我的应用中,我正在连接到具有自己的WiFi网络的设备。在android 6及更高版本中,即使没有互联网连接,系统也会在几秒钟后询问我是否要连接至该网络。只有批准该消息后,我才能连接到我的设备。我尝试以编程方式连接到网络,而不是强迫用户每次都手动进行设置并进行连接。我使用以下代码连接到设备网络:
private void connectToWiFi(WifiManager wifiManager, String wifiName) {
WifiConfiguration configuration = new WifiConfiguration();
configuration.SSID = "\"" + wifiName + "\"";
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager.addNetwork(configuration);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试强制该应用使用WiFi连接,而不是我正在使用的蜂窝数据:
NetworkRequest.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
String ssid = wifiManager.getConnectionInfo().getSSID();
if …Run Code Online (Sandbox Code Playgroud) On updating the device OS to Android 9.0, previously this code was working fine(Xiaomi mi A2). Now, files are not being downloaded on Android Pie 9.0.
Moreover it is working fine in Oreo, Nougat , Marshmallow
Here is the code snippet:
File myDir = new File(Environment.getExternalStorageDirectory(), "MyApp");
if (!myDir.exists()) {
myDir.mkdirs();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
DownloadManager mgr = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse(url);
DownloadManager.Request request = new DownloadManager.Request(
downloadUri);
request.setAllowedNetworkTypes(
DownloadManager.Request.NETWORK_WIFI …Run Code Online (Sandbox Code Playgroud)