diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index b8a1d55..d139301 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3,6 +3,7 @@
package="i2p.bote.android"
android:versionCode="1"
android:versionName="0.1" >
+
+
+
+
+
+
- Bote
New email
Send email
+ Start Bote
+ Stop Bote
Settings
%s selected
diff --git a/src/i2p/bote/android/EmailListActivity.java b/src/i2p/bote/android/EmailListActivity.java
index ea955ff..ff49946 100644
--- a/src/i2p/bote/android/EmailListActivity.java
+++ b/src/i2p/bote/android/EmailListActivity.java
@@ -4,10 +4,13 @@ import net.i2p.client.I2PClient;
import i2p.bote.I2PBote;
import i2p.bote.android.addressbook.AddressBookActivity;
import i2p.bote.android.config.SettingsActivity;
+import i2p.bote.android.service.BoteService;
import i2p.bote.android.util.MoveToDialogFragment;
import i2p.bote.folder.EmailFolder;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.app.ActivityManager;
+import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -200,9 +203,22 @@ public class EmailListActivity extends ActionBarActivity implements
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu
getMenuInflater().inflate(R.menu.main, menu);
+ if (isBoteServiceRunning())
+ menu.findItem(R.id.action_start_bote).setVisible(false);
+ else
+ menu.findItem(R.id.action_stop_bote).setVisible(false);
return super.onCreateOptionsMenu(menu);
}
+ private boolean isBoteServiceRunning() {
+ ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
+ for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
+ if (BoteService.class.getName().equals(service.service.getClassName()))
+ return true;
+ }
+ return false;
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// The action bar home/up action should open or close the drawer.
@@ -212,6 +228,16 @@ public class EmailListActivity extends ActionBarActivity implements
}
switch (item.getItemId()) {
+ case R.id.action_start_bote:
+ Intent start = new Intent(this, BoteService.class);
+ startService(start);
+ return true;
+
+ case R.id.action_stop_bote:
+ Intent stop = new Intent(this, BoteService.class);
+ stopService(stop);
+ return true;
+
case R.id.action_settings:
Intent si = new Intent(this, SettingsActivity.class);
startActivity(si);
diff --git a/src/i2p/bote/android/service/BoteService.java b/src/i2p/bote/android/service/BoteService.java
new file mode 100644
index 0000000..3018ca0
--- /dev/null
+++ b/src/i2p/bote/android/service/BoteService.java
@@ -0,0 +1,24 @@
+package i2p.bote.android.service;
+
+import i2p.bote.I2PBote;
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+public class BoteService extends Service {
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ I2PBote.getInstance().startUp();
+ return START_STICKY;
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
+ @Override
+ public void onDestroy() {
+ I2PBote.getInstance().shutDown();
+ }
+}