use File.getParentFile() to get the tiles file path
This commit is contained in:
parent
cfdaf17ee6
commit
0c4cb8479e
@ -39,25 +39,17 @@ public class IITC_TileManager {
|
|||||||
String path = mIitc.getApplication().getFilesDir().toString() + "/" + hostId + filePath;
|
String path = mIitc.getApplication().getFilesDir().toString() + "/" + hostId + filePath;
|
||||||
if (uri.getQuery() != null) path += uri.getQuery();
|
if (uri.getQuery() != null) path += uri.getQuery();
|
||||||
|
|
||||||
/*
|
|
||||||
* unfortunately, the filename is included in our path. since we may need to create directories,
|
|
||||||
* we need filename and filepath split.
|
|
||||||
*/
|
|
||||||
String[] split = path.split("/");
|
|
||||||
String fileName = split[split.length - 1];
|
|
||||||
path = path.replace(fileName, "");
|
|
||||||
|
|
||||||
// do the tile management
|
// do the tile management
|
||||||
File file = new File(path, fileName);
|
File file = new File(path);
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
// asynchronously download tile if outdated, ignore date if not connected to wifi
|
// asynchronously download tile if outdated, ignore date if not connected to wifi
|
||||||
if (mIitc.getWebView().isConnectedToWifi()) new DownloadTile(path, fileName).execute(url);
|
if (mIitc.getWebView().isConnectedToWifi()) new DownloadTile(path).execute(url);
|
||||||
// return tile from storage
|
// return tile from storage
|
||||||
InputStream in = new BufferedInputStream(new FileInputStream(file));
|
InputStream in = new BufferedInputStream(new FileInputStream(file));
|
||||||
return new WebResourceResponse(TYPE, ENCODING, in);
|
return new WebResourceResponse(TYPE, ENCODING, in);
|
||||||
} else {
|
} else {
|
||||||
// asynchronously download tile to cache and let webviewclient load the resource
|
// asynchronously download tile to cache and let webviewclient load the resource
|
||||||
new DownloadTile(path, fileName).execute(url);
|
new DownloadTile(path).execute(url);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,11 +13,9 @@ import java.net.URLConnection;
|
|||||||
public class DownloadTile extends AsyncTask<String, Void, Boolean> {
|
public class DownloadTile extends AsyncTask<String, Void, Boolean> {
|
||||||
|
|
||||||
private String mFilePath;
|
private String mFilePath;
|
||||||
private String mFileName;
|
|
||||||
|
|
||||||
public DownloadTile(String path, String fileName) {
|
public DownloadTile(String path) {
|
||||||
mFilePath = path;
|
mFilePath = path;
|
||||||
mFileName = fileName;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,13 +26,13 @@ public class DownloadTile extends AsyncTask<String, Void, Boolean> {
|
|||||||
try {
|
try {
|
||||||
tileUrl = new URL(urls[0]);
|
tileUrl = new URL(urls[0]);
|
||||||
conn = tileUrl.openConnection();
|
conn = tileUrl.openConnection();
|
||||||
File file = new File(mFilePath, mFileName);
|
File file = new File(mFilePath);
|
||||||
// update tile if needed, else return
|
// update tile if needed, else return
|
||||||
if (conn.getLastModified() < file.lastModified()) return true;
|
if (conn.getLastModified() < file.lastModified()) return true;
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
is = conn.getInputStream();
|
is = conn.getInputStream();
|
||||||
Log.d("iitcm", "writing to file: " + file.toString());
|
Log.d("iitcm", "writing to file: " + file.toString());
|
||||||
writeTileToFile(is, file, mFilePath);
|
writeTileToFile(is, file);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return false;
|
return false;
|
||||||
@ -45,9 +43,8 @@ public class DownloadTile extends AsyncTask<String, Void, Boolean> {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeTileToFile(InputStream inStream, File file, String path) throws Exception {
|
private void writeTileToFile(InputStream inStream, File file) throws Exception {
|
||||||
File filePath = new File(path);
|
file.getParentFile().mkdirs();
|
||||||
filePath.mkdirs();
|
|
||||||
FileOutputStream outStream = new FileOutputStream(file);
|
FileOutputStream outStream = new FileOutputStream(file);
|
||||||
int bufferSize = 1024;
|
int bufferSize = 1024;
|
||||||
byte[] buffer = new byte[bufferSize];
|
byte[] buffer = new byte[bufferSize];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user