应用程序不工作的AVD,只有实际设备
我想测试我的应用程序,但与任何仿真器没有运气。我已经尝试了几种不同的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");
}
}
我拿出一些其他不相关的东西,我在这里做,但其余的应该复制的问题。如果它还不是很明显,那么我对编程还很陌生。
文本不能作为比拟的 '=='。
你应该尝试这样的:
v.getText().toString().equalsIgnoreCase("Application Found");
及其不是模拟器的工作可能是因为你没有支持SD卡的模拟器。
在Eclipse中走在菜单窗口 - Android SDK和平均经理 选择虚拟设备 选择AVD名称,你需要在安装SD卡 单击编辑按钮 在打开的对话框去SD卡 - 尺寸:和写入500 按钮编辑AVD 运行AVD仿真器
希望它有助于!
一个可能的错误:
v.getText() == "Application Found" // try .equals instead
尝试更换验证码:
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");
由于我的应用程序的整个想法是删除缓存,我想不出任何原因,如果它不存在,我想创建该目录。剩下的一个区别是getAbsolutePath ...在我现有的结构中,这不是必要的吗? –
然后你需要使用这个:File cacheDir = new File(context.getCacheDir()); – Arshu
纠正我,如果我错了,但没有得到CacheDir只适用于我自己的应用程序?相反,对于单独的第三方应用程序的缓存目录进行定位并没有什么不同。 –
感谢有关文本比较尖。但是,我所有的AVD配置都已经分配了SD空间。我还没有尝试过的一件事是将文件管理器安装到AVD中,并验证结构确实是/Android/data/com.app/cache。我会接下来做。 –
更改文字部分后,我得到一个lint错误。它的意思是“方法equalsIgnoreCase(String)对于CharSequence类型是未定义的。” –
getText()返回charSequence。所以我们需要将它转换为像编辑代码一样的字符串。 –