【问题标题】:Context - unable to create external files directory上下文 - 无法创建外部文件目录
【发布时间】:2016-03-17 07:05:37
【问题描述】:

当您在 Nexus 4 上启动应用程序时,我的应用程序出现了一个非常奇怪的问题。

我在应用程序类中有以下代码:

public class MyApp extends Application {

@Override
public void onCreate() {
    super.onCreate();
    File dir = this.getExternalFilesDir(null);
    if (dir == null) {
        Log.e("App", "Problem with my dir!");
    }
}

在 LogCat 中我看到了消息:

12-11 14:09:05.402 11739-11739/com.company.app W/ContextImpl:无法创建外部文件目录
12-11 14:09:05.402 11739-11739/com.company.app E/App:我的目录有问题!

我的AndroidManifest.xml 中已经有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

此外,仅当我重新安装我的应用程序并且不重新启动我的设备时才会出现此问题。如果我重新启动 Nexus,问题就会消失。

这个简单的代码 sn-p 有什么问题?..

提前感谢您的回复。

【问题讨论】:

    标签: android android-context nexus-4


    【解决方案1】:

    你必须这样做

    File dir = new File (this.getExternalFilesDir(null) + "/NewDirectory");  
    if(!dir.exists()){
      f.mkdirs();// if there is no directory then create new
    }
    

    使用getExternalFilesDir()时无需添加权限。只有在使用getExternalStorageDirectory()时才需要

    【讨论】:

    • 谢谢,但这并不能解决我的问题。我的初始任务 - 获取我的应用程序目录中文件夹的路径(它会像这样 - /data/com.company.app/)。但是this.getExternalFilesDir(null) 回复我null - 这是我的问题。但是,当我重新安装应用程序后重新启动设备时,问题就消失了。
    【解决方案2】:

    我终于找到了这种奇怪行为的原因。

    在我的应用程序中,在 Application 类中进行了一些初始化之后,我开始了这样的日志记录过程:

    String[] cmd = new String[] {
        "logcat", "-f", myFileNameFromExternalDir, "-v", "time"
    };
    Runtime.getRuntime().exec(cmd);
    

    而且我没有在任何地方破坏这个过程。这就是为什么在重新安装我的应用程序后,Android 无法创建外部文件目录或缓存目录。

    总结:

    1. 如果你启动了某个进程,别忘了销毁它,例如:

      进程进程 = Runtime.getRuntime().exec(cmd); ... 进程.destroy();

    2. 要检查您的设备上是否运行了一些异常进程,您可以使用adb shell。例如:

    在 Windows cmd 中

    adb shell

    在 Android 外壳中

    ps - 它将列出您设备上的所有进程。

    如果你发现了一些有趣的东西,你可以用lsof命令检查这个进程是否属于你的应用程序:

    lsof -p 进程名称 | grep app_package

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      相关资源
      最近更新 更多