diff --git a/src/org/fdroid/fdroid/FDroid.java b/src/org/fdroid/fdroid/FDroid.java index 0837dd1cb..f5cb2dc59 100644 --- a/src/org/fdroid/fdroid/FDroid.java +++ b/src/org/fdroid/fdroid/FDroid.java @@ -410,7 +410,7 @@ public class FDroid extends TabActivity implements OnItemClickListener { || netstate.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED) { new Thread() { public void run() { - RepoXMLHandler.doUpdates(db); + RepoXMLHandler.doUpdates(FDroid.this, db); update_handler.sendEmptyMessage(0); } }.start(); diff --git a/src/org/fdroid/fdroid/RepoXMLHandler.java b/src/org/fdroid/fdroid/RepoXMLHandler.java index 953191f7b..3e5b5ca0c 100644 --- a/src/org/fdroid/fdroid/RepoXMLHandler.java +++ b/src/org/fdroid/fdroid/RepoXMLHandler.java @@ -37,6 +37,7 @@ import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; +import android.content.Context; import android.util.Log; public class RepoXMLHandler extends DefaultHandler { @@ -61,7 +62,7 @@ public class RepoXMLHandler extends DefaultHandler { super.characters(ch, start, length); String str = new String(ch).substring(start, start + length); - if(curchars == null) + if (curchars == null) curchars = str; else curchars += str; @@ -84,7 +85,7 @@ public class RepoXMLHandler extends DefaultHandler { Log.d("FDroid", "Repo: Package added (" + curapk.version + ")"); curapp.apks.add(curapk); curapk = null; - } else if (curapk != null && str!= null) { + } else if (curapk != null && str != null) { if (curel == "version") { curapk.version = str; } else if (curel == "versioncode") { @@ -106,7 +107,7 @@ public class RepoXMLHandler extends DefaultHandler { } } else if (curapp != null && str != null) { if (curel == "id") { - Log.d("FDroid","App id is " + str); + Log.d("FDroid", "App id is " + str); curapp.id = str; } else if (curel == "name") { curapp.name = str; @@ -181,11 +182,8 @@ public class RepoXMLHandler extends DefaultHandler { } } - private static String LOCAL_PATH = "/sdcard/.fdroid"; - private static String XML_PATH = LOCAL_PATH + "/repotemp.xml"; - // Returns the number of applications with updates. - public static int doUpdates(DB db) { + public static int doUpdates(Context ctx, DB db) { db.beginUpdate(); Vector<DB.Repo> repos = db.getRepos(); for (DB.Repo repo : repos) { @@ -193,17 +191,15 @@ public class RepoXMLHandler extends DefaultHandler { try { - File f = new File(XML_PATH); - if (f.exists()) - f.delete(); + FileOutputStream f = ctx.openFileOutput( + "tempindex.xml", Context.MODE_PRIVATE); // Download the index file from the repo... BufferedInputStream getit = new BufferedInputStream( new URL(repo.address + "/index.xml").openStream()); - FileOutputStream saveit = new FileOutputStream(XML_PATH); - BufferedOutputStream bout = new BufferedOutputStream( - saveit, 1024); + BufferedOutputStream bout = new BufferedOutputStream(f, + 1024); byte data[] = new byte[1024]; int readed = getit.read(data, 0, 1024); @@ -213,24 +209,27 @@ public class RepoXMLHandler extends DefaultHandler { } bout.close(); getit.close(); - saveit.close(); + f.close(); // Process the index... SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); - RepoXMLHandler handler = new RepoXMLHandler(repo.address, db); + RepoXMLHandler handler = new RepoXMLHandler(repo.address, + db); xr.setContentHandler(handler); - InputStreamReader isr = new FileReader(new File(XML_PATH)); + InputStreamReader isr = new FileReader(new File(ctx + .getFilesDir() + + "/tempindex.xml")); InputSource is = new InputSource(isr); xr.parse(is); - File xml_file = new File(XML_PATH); - xml_file.delete(); } catch (Exception e) { Log.d("FDroid", "Exception updating from " + repo.address + " - " + e.getMessage()); + } finally { + ctx.deleteFile("tempindex.xml"); } } diff --git a/src/org/fdroid/fdroid/UpdateService.java b/src/org/fdroid/fdroid/UpdateService.java index 19d551a35..a7ce2024c 100644 --- a/src/org/fdroid/fdroid/UpdateService.java +++ b/src/org/fdroid/fdroid/UpdateService.java @@ -106,7 +106,8 @@ public class UpdateService extends Service { DB db = null; try { db = new DB(getBaseContext()); - int updateNum = RepoXMLHandler.doUpdates(db); + int updateNum = RepoXMLHandler.doUpdates(getBaseContext(), + db); if (updateNum != 0) { // We have updates. @@ -120,9 +121,13 @@ public class UpdateService extends Service { Context context = getApplicationContext(); CharSequence contentTitle = "FDroid"; CharSequence contentText = "Updates are available."; - Intent notificationIntent = new Intent(UpdateService.this, FDroid.class); - PendingIntent contentIntent = PendingIntent.getActivity(UpdateService.this, 0, notificationIntent, 0); - notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); + Intent notificationIntent = new Intent( + UpdateService.this, FDroid.class); + PendingIntent contentIntent = PendingIntent + .getActivity(UpdateService.this, 0, + notificationIntent, 0); + notification.setLatestEventInfo(context, + contentTitle, contentText, contentIntent); notification.flags |= Notification.FLAG_AUTO_CANCEL; n.notify(1, notification); }