mirror of
https://github.com/whyorean/AuroraStore.git
synced 2026-06-19 21:19:16 -04:00
Issue #248 wifi detection does not work on some devices, so I'll have to add a permission
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.INSTALL_PACKAGES" tools:ignore="ProtectedPermissions" />
|
||||
|
||||
@@ -35,7 +35,7 @@ class BackgroundUpdatableAppsTask extends UpdatableAppsTask {
|
||||
(PreferenceActivity.getBoolean(context, PreferenceActivity.PREFERENCE_BACKGROUND_UPDATE_DOWNLOAD)
|
||||
&& (DownloadManagerFactory.get(context) instanceof DownloadManagerAdapter
|
||||
|| !PreferenceActivity.getBoolean(context, PreferenceActivity.PREFERENCE_BACKGROUND_UPDATE_WIFI_ONLY)
|
||||
|| NetworkState.isWifi()
|
||||
|| !NetworkState.isMetered(context)
|
||||
)
|
||||
)
|
||||
;
|
||||
|
||||
@@ -58,7 +58,7 @@ public class BitmapManager {
|
||||
|
||||
public BitmapManager(Context context) {
|
||||
baseDir = context.getCacheDir();
|
||||
noImages = PreferenceActivity.getBoolean(context, PreferenceActivity.PREFERENCE_NO_IMAGES);
|
||||
noImages = PreferenceActivity.getBoolean(context, PreferenceActivity.PREFERENCE_NO_IMAGES) && NetworkState.isMetered(context);
|
||||
}
|
||||
|
||||
public Bitmap getBitmap(String url, boolean fullSize) {
|
||||
@@ -72,7 +72,7 @@ public class BitmapManager {
|
||||
cacheBitmapInMemory(url, bitmap);
|
||||
return bitmap;
|
||||
}
|
||||
if (noImages && !NetworkState.isWifi()) {
|
||||
if (noImages) {
|
||||
return null;
|
||||
}
|
||||
bitmap = downloadBitmap(url, fullSize);
|
||||
|
||||
@@ -59,6 +59,6 @@ public class LoadImageTask extends AsyncTask<ImageSource, Void, Void> {
|
||||
}
|
||||
|
||||
private boolean noImages() {
|
||||
return !NetworkState.isWifi() && PreferenceActivity.getBoolean(imageView.getContext(), PreferenceActivity.PREFERENCE_NO_IMAGES);
|
||||
return NetworkState.isMetered(imageView.getContext()) && PreferenceActivity.getBoolean(imageView.getContext(), PreferenceActivity.PREFERENCE_NO_IMAGES);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,23 @@
|
||||
package com.github.yeriomin.yalpstore;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import eu.chainfire.libsuperuser.Shell;
|
||||
|
||||
import static android.content.Context.CONNECTIVITY_SERVICE;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE_MMS;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE_SUPL;
|
||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||
import static android.net.ConnectivityManager.TYPE_WIMAX;
|
||||
|
||||
public class NetworkState {
|
||||
|
||||
static public boolean isVpn() {
|
||||
@@ -18,23 +31,38 @@ public class NetworkState {
|
||||
return false;
|
||||
}
|
||||
|
||||
static public boolean isWifi() {
|
||||
for (String line: Shell.SH.run("cat /proc/net/wireless")) {
|
||||
String trimmed = line.trim();
|
||||
if (trimmed.startsWith("Inter") || trimmed.startsWith("face")) {
|
||||
continue;
|
||||
}
|
||||
for (String component: TextUtils.split(trimmed, " ")) {
|
||||
if (component.endsWith(":")) {
|
||||
continue;
|
||||
}
|
||||
component = component.replace(".", "");
|
||||
boolean isZero = Util.parseInt(component, 0) == 0;
|
||||
if (!isZero) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
static public boolean isMetered(Context context) {
|
||||
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
|
||||
if (null == connectivityManager) {
|
||||
return true;
|
||||
}
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
|
||||
return isActiveNetworkMetered(connectivityManager);
|
||||
} else {
|
||||
return connectivityManager.isActiveNetworkMetered();
|
||||
}
|
||||
}
|
||||
|
||||
static private boolean isActiveNetworkMetered(ConnectivityManager connectivityManager) {
|
||||
final NetworkInfo info = connectivityManager.getActiveNetworkInfo();
|
||||
if (info == null) {
|
||||
// err on side of caution
|
||||
return true;
|
||||
}
|
||||
final int type = info.getType();
|
||||
switch (type) {
|
||||
case TYPE_MOBILE:
|
||||
case TYPE_MOBILE_DUN:
|
||||
case TYPE_MOBILE_HIPRI:
|
||||
case TYPE_MOBILE_MMS:
|
||||
case TYPE_MOBILE_SUPL:
|
||||
case TYPE_WIMAX:
|
||||
return true;
|
||||
case TYPE_WIFI:
|
||||
return false;
|
||||
default:
|
||||
// err on side of caution
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user