diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index 5cf87a0c..7db6aace 100644
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -201,5 +201,9 @@
+
+
+
+
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index 94d18ec3..c0931ab4 100644
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -331,6 +331,10 @@
Color Picker
Press on Color to apply
+New Transdroid version available
+New Transdroid search module available
+You can now update to %1$s
+
Error during communication with server
Error building request
Error parsing of server response (please check your settings)
diff --git a/android/src/org/transdroid/gui/TorrentsFragment.java b/android/src/org/transdroid/gui/TorrentsFragment.java
index e423b27a..dd409074 100644
--- a/android/src/org/transdroid/gui/TorrentsFragment.java
+++ b/android/src/org/transdroid/gui/TorrentsFragment.java
@@ -86,26 +86,24 @@ import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
-import android.support.v4.app.ActionBar.OnNavigationListener;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
+import android.support.v4.app.ActionBar.OnNavigationListener;
import android.support.v4.view.Menu;
import android.support.v4.view.MenuItem;
import android.support.v4.view.SubMenu;
import android.view.ContextMenu;
-import android.view.ContextMenu.ContextMenuInfo;
import android.view.GestureDetector;
-import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
-import android.view.ViewGroup;
import android.widget.AdapterView;
-import android.widget.AdapterView.AdapterContextMenuInfo;
-import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
@@ -116,6 +114,8 @@ import android.widget.SpinnerAdapter;
import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.Toast;
+import android.widget.AdapterView.AdapterContextMenuInfo;
+import android.widget.AdapterView.OnItemClickListener;
/**
* The main screen for the Transdroid application and provides most on-the-surface functionality
@@ -335,6 +335,9 @@ public class TorrentsFragment extends Fragment implements IDaemonCallback, OnTou
// Start the alarm service, if needed
BootReceiver.startAlarm(getActivity().getApplicationContext());
+ // Check for new app version, if needed
+ BootReceiver.startUpdateCheck(getActivity().getApplicationContext());
+
handleIntent(getActivity().getIntent());
}
diff --git a/android/src/org/transdroid/service/BootReceiver.java b/android/src/org/transdroid/service/BootReceiver.java
index c2906c09..68ed4ee6 100644
--- a/android/src/org/transdroid/service/BootReceiver.java
+++ b/android/src/org/transdroid/service/BootReceiver.java
@@ -29,42 +29,59 @@ import android.os.SystemClock;
import android.preference.PreferenceManager;
/**
- * Receives a broadcast message when the device has started and
- * is used to manually start/stop the alarm service.
+ * Receives a broadcast message when the device has started and is used to manually start/stop the alarm
+ * service.
*
* @author erickok
- *
+ *
*/
public class BootReceiver extends BroadcastReceiver {
private static final String LOG_NAME = "Boot receiver";
-
- private static AlarmManager mgr;
+
+ private static AlarmManager mgr = null;
private static PendingIntent pi = null;
+ private static PendingIntent pui = null;
@Override
public void onReceive(Context context, Intent intent) {
TLog.d(LOG_NAME, "Received fresh boot broadcast; start alarm service");
startAlarm(context);
+ startUpdateCheck(context);
}
- public static void cancelAlarm(){
+ public static void cancelAlarm() {
if (mgr != null) {
mgr.cancel(pi);
}
}
-
- public static void startAlarm(Context context){
+
+ public static void startAlarm(Context context) {
AlarmSettings settings = Preferences.readAlarmSettings(PreferenceManager.getDefaultSharedPreferences(context));
-
+
if (settings.isAlarmEnabled()) {
// Set up PendingIntent for the alarm service
- mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
+ if (mgr == null)
+ mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, AlarmReceiver.class);
pi = PendingIntent.getBroadcast(context, 0, i, 0);
// First intent after a small (2 second) delay and repeat at the user-set intervals
- mgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 2000, settings.getAlarmIntervalInMilliseconds(), pi);
+ mgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 2000, settings
+ .getAlarmIntervalInMilliseconds(), pi);
}
}
-
+
+ public static void startUpdateCheck(Context context) {
+ // Set up PendingIntent for the alarm service
+ if (mgr == null)
+ mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ mgr.cancel(pui);
+
+ Intent i = new Intent(context, UpdateReceiver.class);
+ pui = PendingIntent.getBroadcast(context, 0, i, 0);
+ // First intent after a small (2 second) delay and repeat every day
+ mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 2000,
+ AlarmManager.INTERVAL_DAY, pui);
+ }
+
}