У меня была такая же проблема. вот оригинальный код:
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but
// all we need to know is we can neither read nor write
mExternalStorageAvailable = false;
mExternalStorageWriteable = false;
}
return (mExternalStorageAvailable && mExternalStorageWriteable);
У Proguard были проблемы с последней строкой! Я получил 2 решения.
Решение № 1: не инициализировать 2 логические переменные в начале:
boolean mExternalStorageAvailable;
boolean mExternalStorageWriteable;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but
// all we need to know is we can neither read nor write
mExternalStorageAvailable = false;
mExternalStorageWriteable = false;
}
return (mExternalStorageAvailable && mExternalStorageWriteable);
Решение # 2 возвращает значение true / false вместо установки 2 логических значений.
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
return true;
} else {
return false;
}
Это отлично работает (и может быть лучше) для этого случая, но я рад, что у меня не было этой проблемы в более сложной функции!