Merge pull request #11479 from osmandapp/multyuser_storage
Fix check for multi-user storage
This commit is contained in:
commit
13037bacae
9 changed files with 56 additions and 106 deletions
|
@ -22,6 +22,8 @@ import android.graphics.drawable.ShapeDrawable;
|
||||||
import android.graphics.drawable.StateListDrawable;
|
import android.graphics.drawable.StateListDrawable;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.os.Build.VERSION;
|
||||||
|
import android.os.Build.VERSION_CODES;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.StatFs;
|
import android.os.StatFs;
|
||||||
|
@ -264,6 +266,11 @@ public class AndroidUtils {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getFreeSpace(Context ctx, File dir) {
|
||||||
|
long size = AndroidUtils.getAvailableSpace(dir);
|
||||||
|
return AndroidUtils.formatSize(ctx, size);
|
||||||
|
}
|
||||||
|
|
||||||
public static View findParentViewById(View view, int id) {
|
public static View findParentViewById(View view, int id) {
|
||||||
ViewParent viewParent = view.getParent();
|
ViewParent viewParent = view.getParent();
|
||||||
|
|
||||||
|
@ -856,11 +863,39 @@ public class AndroidUtils {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static long getAvailableSpace(@NonNull OsmandApplication app) {
|
||||||
|
return getAvailableSpace(app.getAppPath(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long getTotalSpace(@NonNull OsmandApplication app) {
|
||||||
|
return getTotalSpace(app.getAppPath(null));
|
||||||
|
}
|
||||||
|
|
||||||
public static long getAvailableSpace(@Nullable File dir) {
|
public static long getAvailableSpace(@Nullable File dir) {
|
||||||
if (dir != null && dir.canRead()) {
|
if (dir != null && dir.canRead()) {
|
||||||
try {
|
try {
|
||||||
StatFs fs = new StatFs(dir.getAbsolutePath());
|
StatFs fs = new StatFs(dir.getAbsolutePath());
|
||||||
return fs.getAvailableBlocksLong() * fs.getBlockSize();
|
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR2) {
|
||||||
|
return fs.getAvailableBlocksLong() * fs.getBlockSizeLong();
|
||||||
|
} else {
|
||||||
|
return fs.getAvailableBlocks() * fs.getBlockSize();
|
||||||
|
}
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
LOG.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long getTotalSpace(@Nullable File dir) {
|
||||||
|
if (dir != null && dir.canRead()) {
|
||||||
|
try {
|
||||||
|
StatFs fs = new StatFs(dir.getAbsolutePath());
|
||||||
|
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR2) {
|
||||||
|
return fs.getBlockCountLong() * fs.getBlockSizeLong();
|
||||||
|
} else {
|
||||||
|
return fs.getBlockCount() * fs.getBlockSize();
|
||||||
|
}
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
LOG.error(e);
|
LOG.error(e);
|
||||||
}
|
}
|
||||||
|
@ -887,13 +922,6 @@ public class AndroidUtils {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float getUsedSpaceGb(File dir) {
|
|
||||||
if (dir.canRead()) {
|
|
||||||
return getTotalSpaceGb(dir) - getFreeSpaceGb(dir);
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CharSequence getStyledString(CharSequence baseString, CharSequence stringToInsertAndStyle,
|
public static CharSequence getStyledString(CharSequence baseString, CharSequence stringToInsertAndStyle,
|
||||||
CharacterStyle baseStyle, CharacterStyle replaceStyle) {
|
CharacterStyle baseStyle, CharacterStyle replaceStyle) {
|
||||||
int indexOfPlaceholder = baseString.toString().indexOf(STRING_PLACEHOLDER);
|
int indexOfPlaceholder = baseString.toString().indexOf(STRING_PLACEHOLDER);
|
||||||
|
|
|
@ -22,7 +22,6 @@ import android.media.MediaRecorder;
|
||||||
import android.media.SoundPool;
|
import android.media.SoundPool;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.StatFs;
|
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
@ -1607,13 +1606,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
double bitrate = (((p.videoBitRate + p.audioBitRate) / 8f) * 60f) / (1 << 30); // gigabytes per minute
|
double bitrate = (((p.videoBitRate + p.audioBitRate) / 8f) * 60f) / (1 << 30); // gigabytes per minute
|
||||||
double clipSpace = bitrate * AV_RS_CLIP_LENGTH.get();
|
double clipSpace = bitrate * AV_RS_CLIP_LENGTH.get();
|
||||||
double storageSize = AV_RS_STORAGE_SIZE.get();
|
double storageSize = AV_RS_STORAGE_SIZE.get();
|
||||||
|
double availableSpace = (double) AndroidUtils.getAvailableSpace(app) / (1 << 30) - clipSpace;
|
||||||
double availableSpace = storageSize;
|
|
||||||
File dir = app.getAppPath("").getParentFile();
|
|
||||||
if (dir.canRead()) {
|
|
||||||
StatFs fs = new StatFs(dir.getAbsolutePath());
|
|
||||||
availableSpace = (double) (fs.getAvailableBlocks()) * fs.getBlockSize() / (1 << 30) - clipSpace;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usedSpace + clipSpace > storageSize || clipSpace > availableSpace) {
|
if (usedSpace + clipSpace > storageSize || clipSpace > availableSpace) {
|
||||||
Arrays.sort(files, new Comparator<File>() {
|
Arrays.sort(files, new Comparator<File>() {
|
||||||
|
|
|
@ -11,7 +11,6 @@ import android.media.CamcorderProfile;
|
||||||
import android.media.MediaRecorder;
|
import android.media.MediaRecorder;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.StatFs;
|
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -42,7 +41,6 @@ import net.osmand.plus.widgets.style.CustomTypefaceSpan;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -381,16 +379,7 @@ public class MultimediaNotesFragment extends BaseSettingsFragment implements Cop
|
||||||
private void setupStorageSizePref(AudioVideoNotesPlugin plugin) {
|
private void setupStorageSizePref(AudioVideoNotesPlugin plugin) {
|
||||||
ListPreferenceEx storageSize = (ListPreferenceEx) findPreference(plugin.AV_RS_STORAGE_SIZE.getId());
|
ListPreferenceEx storageSize = (ListPreferenceEx) findPreference(plugin.AV_RS_STORAGE_SIZE.getId());
|
||||||
|
|
||||||
File dir = app.getAppPath("").getParentFile();
|
long size = AndroidUtils.getTotalSpace(app) / (1 << 30);
|
||||||
long size = 0;
|
|
||||||
if (dir.canRead()) {
|
|
||||||
try {
|
|
||||||
StatFs fs = new StatFs(dir.getAbsolutePath());
|
|
||||||
size = ((long) fs.getBlockSize() * (long) fs.getBlockCount()) / (1 << 30);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
log.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
int value = 1;
|
int value = 1;
|
||||||
ArrayList<Integer> gbList = new ArrayList<>();
|
ArrayList<Integer> gbList = new ArrayList<>();
|
||||||
|
|
|
@ -11,7 +11,6 @@ import android.content.DialogInterface;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.StatFs;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
@ -34,10 +33,10 @@ import net.osmand.FileUtils;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.ValueHolder;
|
import net.osmand.ValueHolder;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
|
||||||
import net.osmand.plus.ProgressImplementation;
|
import net.osmand.plus.ProgressImplementation;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.download.DownloadActivity;
|
import net.osmand.plus.download.DownloadActivity;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
@ -93,18 +92,6 @@ public class DashChooseAppDirFragment {
|
||||||
selectePathTemp = null;
|
selectePathTemp = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getFreeSpace(File dir) {
|
|
||||||
if (dir.canRead()) {
|
|
||||||
try {
|
|
||||||
StatFs fs = new StatFs(dir.getAbsolutePath());
|
|
||||||
return AndroidUtils.formatSize(activity, (long) fs.getAvailableBlocks() * fs.getBlockSize());
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
LOG.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateView() {
|
public void updateView() {
|
||||||
if (type == OsmandSettings.EXTERNAL_STORAGE_TYPE_INTERNAL_FILE) {
|
if (type == OsmandSettings.EXTERNAL_STORAGE_TYPE_INTERNAL_FILE) {
|
||||||
locationPath.setText(R.string.storage_directory_internal_app);
|
locationPath.setText(R.string.storage_directory_internal_app);
|
||||||
|
@ -117,7 +104,7 @@ public class DashChooseAppDirFragment {
|
||||||
} else if (type == OsmandSettings.EXTERNAL_STORAGE_TYPE_SPECIFIED) {
|
} else if (type == OsmandSettings.EXTERNAL_STORAGE_TYPE_SPECIFIED) {
|
||||||
locationPath.setText(R.string.storage_directory_manual);
|
locationPath.setText(R.string.storage_directory_manual);
|
||||||
}
|
}
|
||||||
locationDesc.setText(selectedFile.getAbsolutePath() + " \u2022 " + getFreeSpace(selectedFile));
|
locationDesc.setText(selectedFile.getAbsolutePath() + " \u2022 " + AndroidUtils.getFreeSpace(activity, selectedFile));
|
||||||
boolean copyFiles = !currentAppFile.getAbsolutePath().equals(selectedFile.getAbsolutePath()) && !mapsCopied;
|
boolean copyFiles = !currentAppFile.getAbsolutePath().equals(selectedFile.getAbsolutePath()) && !mapsCopied;
|
||||||
warningReadonly.setVisibility(copyFiles ? View.VISIBLE : View.GONE);
|
warningReadonly.setVisibility(copyFiles ? View.VISIBLE : View.GONE);
|
||||||
if (copyFiles) {
|
if (copyFiles) {
|
||||||
|
|
|
@ -652,7 +652,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
TextView messageTextView = (TextView) view.findViewById(R.id.leftTextView);
|
TextView messageTextView = (TextView) view.findViewById(R.id.leftTextView);
|
||||||
ProgressBar sizeProgress = (ProgressBar) view.findViewById(R.id.progressBar);
|
ProgressBar sizeProgress = (ProgressBar) view.findViewById(R.id.progressBar);
|
||||||
|
|
||||||
File dir = activity.getMyApplication().getAppPath("").getParentFile();
|
File dir = activity.getMyApplication().getAppPath(null);
|
||||||
String size = "";
|
String size = "";
|
||||||
int percent = 0;
|
int percent = 0;
|
||||||
if (dir.canRead()) {
|
if (dir.canRead()) {
|
||||||
|
|
|
@ -9,7 +9,6 @@ import android.net.TrafficStats;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.AsyncTask.Status;
|
import android.os.AsyncTask.Status;
|
||||||
import android.os.StatFs;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
@ -17,13 +16,12 @@ import androidx.annotation.UiThread;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
|
||||||
import net.osmand.AndroidNetworkUtils;
|
import net.osmand.AndroidNetworkUtils;
|
||||||
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.map.WorldRegion;
|
import net.osmand.map.WorldRegion;
|
||||||
import net.osmand.map.WorldRegion.RegionParams;
|
import net.osmand.map.WorldRegion.RegionParams;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
|
||||||
import net.osmand.plus.settings.backend.OsmandPreference;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.Version;
|
import net.osmand.plus.Version;
|
||||||
import net.osmand.plus.base.BasicProgressAsyncTask;
|
import net.osmand.plus.base.BasicProgressAsyncTask;
|
||||||
|
@ -31,6 +29,8 @@ import net.osmand.plus.download.DownloadFileHelper.DownloadFileShowWarning;
|
||||||
import net.osmand.plus.helpers.DatabaseHelper;
|
import net.osmand.plus.helpers.DatabaseHelper;
|
||||||
import net.osmand.plus.notifications.OsmandNotification;
|
import net.osmand.plus.notifications.OsmandNotification;
|
||||||
import net.osmand.plus.resources.ResourceManager;
|
import net.osmand.plus.resources.ResourceManager;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandPreference;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
@ -302,19 +302,8 @@ public class DownloadIndexesThread {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public double getAvailableSpace() {
|
public double getAvailableSpace() {
|
||||||
File dir = app.getAppPath("").getParentFile();
|
return AndroidUtils.getAvailableSpace(app) / (1 << 20);
|
||||||
double asz = -1;
|
|
||||||
if (dir.canRead()) {
|
|
||||||
try {
|
|
||||||
StatFs fs = new StatFs(dir.getAbsolutePath());
|
|
||||||
asz = (((long) fs.getAvailableBlocks()) * fs.getBlockSize()) / (1 << 20);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
LOG.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return asz;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// PRIVATE IMPL
|
/// PRIVATE IMPL
|
||||||
|
|
|
@ -5,7 +5,6 @@ import android.content.DialogInterface;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.StatFs;
|
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -17,8 +16,6 @@ import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.ibm.icu.impl.IllegalIcuArgumentException;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
|
||||||
|
@ -28,12 +25,12 @@ import net.osmand.IProgress;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.plus.OnDismissDialogFragmentListener;
|
import net.osmand.plus.OnDismissDialogFragmentListener;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.base.BottomSheetDialogFragment;
|
import net.osmand.plus.base.BottomSheetDialogFragment;
|
||||||
import net.osmand.plus.dashboard.DashChooseAppDirFragment;
|
import net.osmand.plus.dashboard.DashChooseAppDirFragment;
|
||||||
import net.osmand.plus.download.DownloadActivity;
|
import net.osmand.plus.download.DownloadActivity;
|
||||||
import net.osmand.plus.download.DownloadIndexesThread;
|
import net.osmand.plus.download.DownloadIndexesThread;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
|
@ -119,7 +116,7 @@ public class DataStoragePlaceDialogFragment extends BottomSheetDialogFragment {
|
||||||
deviceStorageImageView.setImageDrawable(getContentIcon(R.drawable.ic_action_phone));
|
deviceStorageImageView.setImageDrawable(getContentIcon(R.drawable.ic_action_phone));
|
||||||
TextView deviceStorageDescription = (TextView) view.findViewById(R.id.deviceMemoryDescription);
|
TextView deviceStorageDescription = (TextView) view.findViewById(R.id.deviceMemoryDescription);
|
||||||
deviceStorageDescription.setText(deviceStorageName);
|
deviceStorageDescription.setText(deviceStorageName);
|
||||||
deviceStorageDescription.setText(getFreeSpace(deviceStorage));
|
deviceStorageDescription.setText(AndroidUtils.getFreeSpace(activity, deviceStorage));
|
||||||
|
|
||||||
View sharedMemoryRow = view.findViewById(R.id.sharedMemoryRow);
|
View sharedMemoryRow = view.findViewById(R.id.sharedMemoryRow);
|
||||||
if (hasExternalStoragePermission && sharedStorage != null) {
|
if (hasExternalStoragePermission && sharedStorage != null) {
|
||||||
|
@ -127,7 +124,7 @@ public class DataStoragePlaceDialogFragment extends BottomSheetDialogFragment {
|
||||||
ImageView sharedMemoryImageView = (ImageView) view.findViewById(R.id.sharedMemoryImageView);
|
ImageView sharedMemoryImageView = (ImageView) view.findViewById(R.id.sharedMemoryImageView);
|
||||||
sharedMemoryImageView.setImageDrawable(getContentIcon(R.drawable.ic_action_phone));
|
sharedMemoryImageView.setImageDrawable(getContentIcon(R.drawable.ic_action_phone));
|
||||||
TextView sharedMemoryDescription = (TextView) view.findViewById(R.id.sharedMemoryDescription);
|
TextView sharedMemoryDescription = (TextView) view.findViewById(R.id.sharedMemoryDescription);
|
||||||
sharedMemoryDescription.setText(getFreeSpace(sharedStorage));
|
sharedMemoryDescription.setText(AndroidUtils.getFreeSpace(activity, sharedStorage));
|
||||||
} else {
|
} else {
|
||||||
view.findViewById(R.id.divSharedStorage).setVisibility(View.GONE);
|
view.findViewById(R.id.divSharedStorage).setVisibility(View.GONE);
|
||||||
sharedMemoryRow.setVisibility(View.GONE);
|
sharedMemoryRow.setVisibility(View.GONE);
|
||||||
|
@ -139,7 +136,7 @@ public class DataStoragePlaceDialogFragment extends BottomSheetDialogFragment {
|
||||||
ImageView memoryStickImageView = (ImageView) view.findViewById(R.id.memoryStickImageView);
|
ImageView memoryStickImageView = (ImageView) view.findViewById(R.id.memoryStickImageView);
|
||||||
memoryStickImageView.setImageDrawable(getContentIcon(R.drawable.ic_sdcard));
|
memoryStickImageView.setImageDrawable(getContentIcon(R.drawable.ic_sdcard));
|
||||||
TextView memoryStickDescription = (TextView) view.findViewById(R.id.memoryStickDescription);
|
TextView memoryStickDescription = (TextView) view.findViewById(R.id.memoryStickDescription);
|
||||||
memoryStickDescription.setText(getFreeSpace(cardStorage));
|
memoryStickDescription.setText(AndroidUtils.getFreeSpace(activity, cardStorage));
|
||||||
} else {
|
} else {
|
||||||
view.findViewById(R.id.divExtStorage).setVisibility(View.GONE);
|
view.findViewById(R.id.divExtStorage).setVisibility(View.GONE);
|
||||||
memoryStickRow.setVisibility(View.GONE);
|
memoryStickRow.setVisibility(View.GONE);
|
||||||
|
@ -192,23 +189,6 @@ public class DataStoragePlaceDialogFragment extends BottomSheetDialogFragment {
|
||||||
.getDefaultInternalStorage();
|
.getDefaultInternalStorage();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getFreeSpace(File dir) {
|
|
||||||
String sz = "";
|
|
||||||
if (dir != null && dir.canRead()) {
|
|
||||||
try {
|
|
||||||
StatFs fs = new StatFs(dir.getAbsolutePath());
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
long size = (long) fs.getAvailableBlocks() * fs.getBlockSize();
|
|
||||||
if (size > 0) {
|
|
||||||
sz = AndroidUtils.formatSize(getActivity(), size);
|
|
||||||
}
|
|
||||||
} catch (IllegalIcuArgumentException e) {
|
|
||||||
LOG.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sz;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkAssets() {
|
private void checkAssets() {
|
||||||
getMyApplication().getResourceManager().checkAssets(IProgress.EMPTY_PROGRESS, true);
|
getMyApplication().getResourceManager().checkAssets(IProgress.EMPTY_PROGRESS, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.StatFs;
|
|
||||||
import android.provider.Settings.Secure;
|
import android.provider.Settings.Secure;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -37,7 +36,6 @@ import net.osmand.plus.AppInitializer.AppInitializeListener;
|
||||||
import net.osmand.plus.OsmAndLocationProvider;
|
import net.osmand.plus.OsmAndLocationProvider;
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.Version;
|
import net.osmand.plus.Version;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
@ -51,12 +49,12 @@ import net.osmand.plus.download.IndexItem;
|
||||||
import net.osmand.plus.download.ui.DataStoragePlaceDialogFragment;
|
import net.osmand.plus.download.ui.DataStoragePlaceDialogFragment;
|
||||||
import net.osmand.plus.helpers.AndroidUiHelper;
|
import net.osmand.plus.helpers.AndroidUiHelper;
|
||||||
import net.osmand.plus.resources.ResourceManager;
|
import net.osmand.plus.resources.ResourceManager;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import net.osmand.util.MapUtils;
|
import net.osmand.util.MapUtils;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
@ -331,7 +329,7 @@ public class FirstUsageWizardFragment extends BaseOsmAndFragment implements OsmA
|
||||||
FragmentActivity activity = getActivity();
|
FragmentActivity activity = getActivity();
|
||||||
if (!OsmAndLocationProvider.isLocationPermissionAvailable(activity)) {
|
if (!OsmAndLocationProvider.isLocationPermissionAvailable(activity)) {
|
||||||
ActivityCompat.requestPermissions(activity,
|
ActivityCompat.requestPermissions(activity,
|
||||||
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
|
new String[] {Manifest.permission.ACCESS_FINE_LOCATION},
|
||||||
FIRST_USAGE_LOCATION_PERMISSION);
|
FIRST_USAGE_LOCATION_PERMISSION);
|
||||||
} else {
|
} else {
|
||||||
app.getLocationProvider().addLocationListener(this);
|
app.getLocationProvider().addLocationListener(this);
|
||||||
|
@ -387,13 +385,13 @@ public class FirstUsageWizardFragment extends BaseOsmAndFragment implements OsmA
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
((MapActivity)getActivity()).disableDrawer();
|
((MapActivity) getActivity()).disableDrawer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
((MapActivity)getActivity()).enableDrawer();
|
((MapActivity) getActivity()).enableDrawer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -697,7 +695,7 @@ public class FirstUsageWizardFragment extends BaseOsmAndFragment implements OsmA
|
||||||
TextView freeSpaceValue = (TextView) storageView.findViewById(R.id.storage_free_space_value);
|
TextView freeSpaceValue = (TextView) storageView.findViewById(R.id.storage_free_space_value);
|
||||||
String freeSpaceStr = getString(R.string.storage_free_space) + ": ";
|
String freeSpaceStr = getString(R.string.storage_free_space) + ": ";
|
||||||
freeSpace.setText(freeSpaceStr);
|
freeSpace.setText(freeSpaceStr);
|
||||||
freeSpaceValue.setText(getFreeSpace(settings.getExternalStorageDirectory()));
|
freeSpaceValue.setText(AndroidUtils.getFreeSpace(storageView.getContext(), settings.getExternalStorageDirectory()));
|
||||||
|
|
||||||
AppCompatButton changeStorageButton = (AppCompatButton) storageView.findViewById(R.id.storage_change_button);
|
AppCompatButton changeStorageButton = (AppCompatButton) storageView.findViewById(R.id.storage_change_button);
|
||||||
if (wizardType == WizardType.MAP_DOWNLOAD) {
|
if (wizardType == WizardType.MAP_DOWNLOAD) {
|
||||||
|
@ -709,7 +707,7 @@ public class FirstUsageWizardFragment extends BaseOsmAndFragment implements OsmA
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (!DownloadActivity.hasPermissionToWriteExternalStorage(getContext())) {
|
if (!DownloadActivity.hasPermissionToWriteExternalStorage(getContext())) {
|
||||||
ActivityCompat.requestPermissions(getActivity(),
|
ActivityCompat.requestPermissions(getActivity(),
|
||||||
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
|
new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
|
||||||
FIRST_USAGE_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION);
|
FIRST_USAGE_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -737,18 +735,6 @@ public class FirstUsageWizardFragment extends BaseOsmAndFragment implements OsmA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getFreeSpace(File dir) {
|
|
||||||
if (dir.canRead()) {
|
|
||||||
try {
|
|
||||||
StatFs fs = new StatFs(dir.getAbsolutePath());
|
|
||||||
return AndroidUtils.formatSize(getActivity(), (long) fs.getAvailableBlocks() * fs.getBlockSize());
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
LOG.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void showSearchLocationFragment(FragmentActivity activity, boolean searchByIp) {
|
public static void showSearchLocationFragment(FragmentActivity activity, boolean searchByIp) {
|
||||||
Fragment fragment = new FirstUsageWizardFragment();
|
Fragment fragment = new FirstUsageWizardFragment();
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
|
|
|
@ -36,7 +36,6 @@ import net.osmand.plus.settings.fragments.ExportSettingsAdapter.OnItemSelectedLi
|
||||||
import net.osmand.plus.widgets.TextViewEx;
|
import net.osmand.plus.widgets.TextViewEx;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
@ -221,8 +220,7 @@ public abstract class BaseSettingsListFragment extends BaseOsmAndFragment implem
|
||||||
if (calculatedSize != 0) {
|
if (calculatedSize != 0) {
|
||||||
selectedItemsSize.setText(AndroidUtils.formatSize(app, calculatedSize));
|
selectedItemsSize.setText(AndroidUtils.formatSize(app, calculatedSize));
|
||||||
|
|
||||||
File dir = app.getAppPath("").getParentFile();
|
long availableSizeBytes = AndroidUtils.getAvailableSpace(app);
|
||||||
long availableSizeBytes = AndroidUtils.getAvailableSpace(dir);
|
|
||||||
if (calculatedSize > availableSizeBytes) {
|
if (calculatedSize > availableSizeBytes) {
|
||||||
String availableSize = AndroidUtils.formatSize(app, availableSizeBytes);
|
String availableSize = AndroidUtils.formatSize(app, availableSizeBytes);
|
||||||
availableSpaceDescr.setText(getString(R.string.export_not_enough_space_descr, availableSize));
|
availableSpaceDescr.setText(getString(R.string.export_not_enough_space_descr, availableSize));
|
||||||
|
|
Loading…
Reference in a new issue