2013-08-16 3 views
2

Я пытаюсь протестировать свое приложение, но не желаю никаких эмуляторов. Я пробовал несколько разных AVD и BlueStacks. Из-за того, как они монтируют виртуальную SDCard, мое приложение не находит каталог кэша, как ожидалось. Однако, когда я запускаю одно и то же приложение на двух разных телефонах Android, он работает нормально. Столкнувшись с этой проблемой, я подумал, что должен быть лучший способ обратиться к папке, которую я ищу.Приложение не работает на AVD, только на реальных устройствах

Я использую это в моем OnCreate:

// Check if application exists 
    for (int i = 0; i < list.size(); i++) { 
     if (list.get(i).packageName.equals("com.someapphere")) { 
      v.setText("Application Found"); 
      break; 
     } else { 
      v.setText("Application Not Found"); 
     } 
    } 

    if (v.getText() == "Application Found") { 
     // Check for Cache Usage 
     final File dataStore = Environment.getExternalStorageDirectory(); 
     try { 
      File tCache = new File(dataStore.getAbsolutePath() 
       + "/Android/data/com.someapphere/cache"); 
      long tCacheSize = folderSize(tCache); 

      if (tCacheSize == 0) { 
       v2.setText(" Nothing to do"); 
      } else { 
       // Start Async task - delete files 
       ... 
      } 
     } catch(Exception e) { 
       v2.setText(" Cache not found"); 
     } 
    } 

я вынул некоторые другие неактуальной вещи я делаю здесь, но остальные должны повторить эту проблему. Если это еще не очевидно, я по-прежнему новичок в программировании.

ответ

0

Текст не может сравниваться как '=='.

Вы должны попробовать так:

v.getText().toString().equalsIgnoreCase("Application Found"); 

и ее не работает в эмуляторе, может быть, потому что у вас нет поддержки SD-карты в эмуляторе.

В Eclipse перейдите в меню Window - Android SDK и Avg менеджер Выберите Виртуальные устройства Выберите AVD Имя, где вам необходимо установить SD-карту Нажмите на Edit кнопка В открытом окне перейдите к SD карта - Размер: и написать 500 Нажмите кнопку Редактировать AVD Run AVD эмулятор

Надеюсь, что это поможет!

+0

Спасибо за отзыв о сравнении текста. Тем не менее, у всех моих конфигураций AVD уже выделено пространство SD. Одна вещь, которую я еще не пробовал, заключается в установке файлового менеджера в AVD, и проверка структуры действительно /Android/data/com.app/cache. Я сделаю это дальше. –

+0

Я получаю ошибку lint после изменения текстовой части. Он говорит: «Метод equalsIgnoreCase (String) не определен для типа CharSequence». –

+0

getText() возвращает charSequence. поэтому нам нужно преобразовать его в строку, например отредактированный код. –

0

Возможная ошибка:

v.getText() == "Application Found" // try .equals instead 
0

Попробуйте заменить этот код:

File tCache = new File(dataStore.getAbsolutePath() + "/Android/data/com.someapphere/cache"); 

С помощью этого кода:

File cache_Folder = new File(dataStore + "/Android/data/com.someapphere/cache"); 
if (!cache_Folder.exists()) 
    cache_Folder.mkdirs(); 

File tCache = new File(dataStore + "/Android/data/com.someapphere/cache"); 
+0

Поскольку вся идея моего приложения заключается в удалении кеша, я не могу думать о какой-либо причине, по которой я хочу создать каталог, если он не существует. Осталось одно отличие: getAbsolutePath ... в моей существующей структуре, разве это не нужно? –

+0

Тогда вам нужно использовать это: File cacheDir = new File (context.getCacheDir()); – Arshu

+0

Исправить меня, если я ошибаюсь, но не getCacheDir применяется только для моего собственного приложения? Скорее, это не повлияет на ориентацию на кеш-каталог отдельного стороннего приложения? –

Смежные вопросы