2013-08-16 39 views
2

我想測試我的應用程序,但與任何仿真器沒有運氣。我已經嘗試了幾種不同的AVD和BlueStacks。由於他們安裝虛擬SD卡的方式,我的應用程序沒有按預期找到緩存目錄。但是,當我在兩個不同的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中走在菜單窗口 - Android SDK和平均經理 選擇虛擬設備 選擇AVD名稱,你需要在安裝SD卡 單擊編輯按鈕 在打開的對話框去SD卡 - 尺寸:和寫入500 按鈕編輯AVD 運行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

糾正我,如果我錯了,但沒有得到CacheDir只適用於我自己的應用程序?相反,對於單獨的第三方應用程序的緩存目錄進行定位並沒有什麼不同。 –

相關問題