2013-08-16 41 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只适用于我自己的应用程序?相反,对于单独的第三方应用程序的缓存目录进行定位并没有什么不同。 –

相关问题