keep F-Droid visible after adding removeable storage mirror

This commit is contained in:
Hans-Christoph Steiner 2018-08-09 16:59:08 +02:00
parent 0e5dd45859
commit 69e2ca4283
3 changed files with 26 additions and 5 deletions

View File

@ -11,6 +11,7 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.views.ManageReposActivity;
import org.fdroid.fdroid.views.main.MainActivity; import org.fdroid.fdroid.views.main.MainActivity;
import java.net.URI; import java.net.URI;
@ -88,6 +89,7 @@ public class AddRepoIntentService extends IntentService {
} }
} }
} }
intent.putExtra(ManageReposActivity.EXTRA_FINISH_AFTER_ADDING_REPO, false);
intent.setComponent(new ComponentName(this, MainActivity.class)); intent.setComponent(new ComponentName(this, MainActivity.class));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); startActivity(intent);

View File

@ -37,6 +37,8 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.app.LoaderManager; import android.support.v4.app.LoaderManager;
import android.support.v4.app.NavUtils;
import android.support.v4.app.TaskStackBuilder;
import android.support.v4.content.CursorLoader; import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader; import android.support.v4.content.Loader;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
@ -81,6 +83,8 @@ public class ManageReposActivity extends AppCompatActivity
implements LoaderManager.LoaderCallbacks<Cursor>, RepoAdapter.EnabledListener { implements LoaderManager.LoaderCallbacks<Cursor>, RepoAdapter.EnabledListener {
private static final String TAG = "ManageReposActivity"; private static final String TAG = "ManageReposActivity";
public static final String EXTRA_FINISH_AFTER_ADDING_REPO = "finishAfterAddingRepo";
private static final String DEFAULT_NEW_REPO_TEXT = "https://"; private static final String DEFAULT_NEW_REPO_TEXT = "https://";
private enum AddRepoState { private enum AddRepoState {
@ -95,7 +99,7 @@ public class ManageReposActivity extends AppCompatActivity
* True if activity started with an intent such as from QR code. False if * True if activity started with an intent such as from QR code. False if
* opened from, e.g. the main menu. * opened from, e.g. the main menu.
*/ */
private boolean isImportingRepo; private boolean finishAfterAddingRepo;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -158,6 +162,16 @@ public class ManageReposActivity extends AppCompatActivity
case R.id.action_add_repo: case R.id.action_add_repo:
showAddRepo(); showAddRepo();
return true; return true;
case android.R.id.home:
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent) || isTaskRoot()) {
TaskStackBuilder.create(this)
.addNextIntentWithParentStack(upIntent)
.startActivities();
} else {
NavUtils.navigateUpTo(this, upIntent);
}
return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
@ -274,7 +288,7 @@ public class ManageReposActivity extends AppCompatActivity
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); dialog.dismiss();
if (isImportingRepo) { if (finishAfterAddingRepo) {
ManageReposActivity.this.finish(); ManageReposActivity.this.finish();
} }
} }
@ -789,7 +803,7 @@ public class ManageReposActivity extends AppCompatActivity
if (addRepoDialog.isShowing()) { if (addRepoDialog.isShowing()) {
addRepoDialog.dismiss(); addRepoDialog.dismiss();
} }
if (isImportingRepo) { if (finishAfterAddingRepo) {
setResult(RESULT_OK); setResult(RESULT_OK);
finish(); finish();
} }
@ -800,7 +814,7 @@ public class ManageReposActivity extends AppCompatActivity
/* an URL from a click, NFC, QRCode scan, etc */ /* an URL from a click, NFC, QRCode scan, etc */
NewRepoConfig newRepoConfig = new NewRepoConfig(this, intent); NewRepoConfig newRepoConfig = new NewRepoConfig(this, intent);
if (newRepoConfig.isValidRepo()) { if (newRepoConfig.isValidRepo()) {
isImportingRepo = true; finishAfterAddingRepo = intent.getBooleanExtra(EXTRA_FINISH_AFTER_ADDING_REPO, true);
showAddRepo(newRepoConfig.getRepoUriString(), newRepoConfig.getFingerprint(), showAddRepo(newRepoConfig.getRepoUriString(), newRepoConfig.getFingerprint(),
newRepoConfig.getUsername(), newRepoConfig.getPassword()); newRepoConfig.getUsername(), newRepoConfig.getPassword());
checkIfNewRepoOnSameWifi(newRepoConfig); checkIfNewRepoOnSameWifi(newRepoConfig);

View File

@ -353,7 +353,12 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
confirmIntent.setData(intent.getData()); confirmIntent.setData(intent.getData());
startActivityForResult(confirmIntent, REQUEST_SWAP); startActivityForResult(confirmIntent, REQUEST_SWAP);
} else { } else {
startActivity(new Intent(ACTION_ADD_REPO, intent.getData(), this, ManageReposActivity.class)); Intent clean = new Intent(ACTION_ADD_REPO, intent.getData(), this, ManageReposActivity.class);
if (intent.hasExtra(ManageReposActivity.EXTRA_FINISH_AFTER_ADDING_REPO)) {
clean.putExtra(ManageReposActivity.EXTRA_FINISH_AFTER_ADDING_REPO,
intent.getBooleanExtra(ManageReposActivity.EXTRA_FINISH_AFTER_ADDING_REPO, true));
}
startActivity(clean);
} }
finish(); finish();
} else if (parser.getErrorMessage() != null) { } else if (parser.getErrorMessage() != null) {