在我的应用程序中,我创建了一个旨在从SD卡中读取内容的服务。
在启动时创建并启动服务。
问题是虽然我很确定该目录存在,但在启动时,该服务找不到该目录。
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
Context context=getBaseContext();
File sdDir = new File(Environment.getExternalStorageDirectory()+"/temp/Data/");
if(!sdDir.exists()){
sdDir.mkdir();
Toast.makeText(this, "CAN'T FIND!", Toast.LENGTH_LONG).show();
}
}
上面的代码段输出
起初,我认为SD卡可能不会在启动时挂载,这就是服务无法找到目录的原因。我仍然不确定。
有人有想法吗?可能是什么问题?
答案 0 :(得分:2)
某些设备需要一些时间来安装SD卡。启动时间后可能无法立即使用。
每隔几秒轮询一次,直到它可用。
也试试这个:
public static boolean hasStorage(boolean requireWriteAccess) {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
} else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}