应用程序不适用于AVD,仅适用于实际设备

时间:2013-08-16 04:02:27

标签: android android-external-storage

我正在尝试测试我的应用,但对任何模拟器都没有运气。我尝试过几种不同的AVD和BlueStack。由于他们安装虚拟SD卡的方式,我的应用程序没有按预期找到缓存目录。但是,当我在两个不同的Android手机上运行相同的应用程序时,它似乎正常工作。面对这个问题让我觉得必须有一个更好的方法来引用我正在寻找的文件夹。

我在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");
        }
    }

我拿出了一些我在这里做的其他不相关的东西,但其余的应该复制这个问题。如果它还不是很明显,那么我对编程还是很陌生。

3 个答案:

答案 0 :(得分:0)

一个可能的错误:

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

答案 1 :(得分:0)

无法将文字比较为“==”。

你应该这样试试:

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

并且它在模拟器中不起作用可能是因为您在模拟器中没有SD卡支持。

在Eclipse中,进入菜单窗口 - Android SDK和Avg Manager 选择虚拟设备 选择 AVD名称,您需要安装SD卡 点击修改按钮 在打开的对话框中,转到 SD卡 - 大小:并写入500 按下按钮编辑AVD 运行AVD模拟器

希望它能帮助!!

答案 2 :(得分: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");