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(); + } +}