Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
serjufa1
1 / 1 / 0
Регистрация: 15.10.2007
Сообщений: 75
#1

Проверка расширенной памяти - Android

10.12.2015, 14:35. Просмотров 214. Ответов 3
Метки нет (Все метки)

Последовательность действий:
1. Сначала тестил программу на андроид-студио при подключенном ч/з USB сотовом LG
2. Потом отцепил USb, снял все задачи на сотовом и запустил вчистую прогу на сотовом.

Результат одинаков - ссылка на папку = внутренней памяти. А мне нужна внешняя microSD. В чем причина, не пойму. При этом, папка создается и во внутр и во внешней памяти.

В манифесте прописал :
Java
1
2
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
Теперь фрагмент кода (весь тоже могу выложить)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
   File myExternalFile;
    private String filename = "MySampleFile.txt";
    private String filepath = "MyFileStorage";
    String path1;
 private static boolean isExternalStorageReadOnly() {
        String extStorageState = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) {
            return true;
        }
        return false;
    }
 
    private static boolean isExternalStorageAvailable() {
        String extStorageState = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(extStorageState)) {
            return true;
        }
        return false;
    }
.........      
  if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) {
            saveToExternalStorage.setEnabled(false);
            //Toast.makeText(this, "NO external storage", Toast.LENGTH_LONG).show();
        } else {
            myExternalFile = new File(getExternalFilesDir(filepath), filename);
            path1 =  myExternalFile.toString();
            Toast.makeText(this, myExternalFile.toString(), Toast.LENGTH_LONG).show();
        }
    }
вот скрин
Миниатюры
Проверка расширенной памяти  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2015, 14:35     Проверка расширенной памяти
Посмотрите здесь:

Проверка internet connection. Проверка доступности сети Android
Освобождение памяти Android
Путь к карте памяти Android
Считать изображения из памяти Android
Android Удержать кеш в памяти
Android Потребление памяти программы
Активити не уходят из памяти Android
Дамп памяти Android
Android Очистка памяти Bitmap
Не понимаю нехватку памяти Android
Android ImageView очистка памяти
Утечка памяти Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
10.12.2015, 17:10     Проверка расширенной памяти #2
у меня работает вот так:
Java
1
2
3
4
        Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
        String extPicsDir = isSDPresent
            ? Environment.getExternalStorageDirectory().toString() + "/" + getAppName() + "/tempPics"
                : getApplicationContext().getCacheDir().toString();
serjufa1
1 / 1 / 0
Регистрация: 15.10.2007
Сообщений: 75
11.12.2015, 12:00  [ТС]     Проверка расширенной памяти #3
Надеялся на чудо. Но, увы. См.скрин.
Сначала пробовал в дебаггере. Затем отцепил USB, запустил на телеф. Но, ссылка только на внутр память.
Как же быть, у других же это работает? Может, я не то делаю ?
Миниатюры
Проверка расширенной памяти  
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
11.12.2015, 13:50     Проверка расширенной памяти #4
чутка поправим код, чоб уж совсем правильно.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
        extPicsDir = isSDPresent
            ? Environment.getExternalStorageDirectory().toString() + "/" + getAppName()
                : getApplicationContext().getCacheDir().toString();
 
createExtDirIfNeed(extPicsDir);
 
...
    private String getAppName () {
        final PackageManager pm = getApplicationContext().getPackageManager();
        ApplicationInfo ai;
        try {
            ai = pm.getApplicationInfo( this.getPackageName(), 0);
        } catch (final PackageManager.NameNotFoundException e) {
            ai = null;
        }
        return (String) (ai != null ? pm.getApplicationLabel(ai) : "unknown");
    }
 
    private void createExtDirIfNeed (String dirName) {
        File f = new File(dirName);
        if (!f.exists()) {
            f.mkdirs();
        }
    }
imho Ваша карта подключена как не карта. если ее убрать, то просто пропадет один из каталогов. и она называется не sdcard.

попробуйте вот по этому коду, что я дал, записать что-то (стр.6), потом вытащить карту и прочитать эту карту и этот путь на компе.

Добавлено через 8 минут
забыл спросить. если вытащить карту, то первая переменная возвращает false?
Yandex
Объявления
11.12.2015, 13:50     Проверка расширенной памяти
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru