Reopen properly when we select launcher icon.

* Reopen properly when we select launcher icon.

* Reduce noise
This commit is contained in:
Alex Hart
2020-12-19 16:54:00 -04:00
committed by Alan Evans
parent 6bab6c2454
commit b7477d287b
20 changed files with 72 additions and 34 deletions

View File

@@ -225,6 +225,17 @@
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />
</intent-filter>
<meta-data android:name="com.sec.minimode.icon.portrait.normal"
android:resource="@mipmap/ic_launcher" />
<meta-data android:name="com.sec.minimode.icon.landscape.normal"
android:resource="@mipmap/ic_launcher" />
</activity-alias>
<activity android:name=".deeplinks.DeepLinkEntryActivity"
android:noHistory="true"
android:theme="@style/Signal.Transparent">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
@@ -241,13 +252,7 @@
<data android:scheme="https"
android:host="signal.group"/>
</intent-filter>
<meta-data android:name="com.sec.minimode.icon.portrait.normal"
android:resource="@mipmap/ic_launcher" />
<meta-data android:name="com.sec.minimode.icon.landscape.normal"
android:resource="@mipmap/ic_launcher" />
</activity-alias>
</activity>
<activity android:name=".conversation.ConversationActivity"
android:windowSoftInputMode="stateUnchanged"
@@ -504,7 +509,6 @@
<activity android:name=".MainActivity"
android:theme="@style/Theme.Signal.DayNight.NoActionBar"
android:launchMode="singleTask"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize" />
<activity android:name=".pin.PinRestoreActivity"

View File

@@ -150,7 +150,7 @@ public class DatabaseMigrationActivity extends PassphraseRequiredActivity {
startActivity((Intent)getIntent().getParcelableExtra("next_intent"));
} else {
// TODO [greyson] Navigation
startActivity(new Intent(this, MainActivity.class));
startActivity(MainActivity.clearTop(this));
}
}

View File

@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -22,6 +23,16 @@ public class MainActivity extends PassphraseRequiredActivity {
private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme();
private final MainNavigator navigator = new MainNavigator(this);
public static @NonNull Intent clearTop(@NonNull Context context) {
Intent intent = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState, boolean ready) {
super.onCreate(savedInstanceState, ready);

View File

@@ -221,7 +221,7 @@ public abstract class PassphraseRequiredActivity extends BaseActivity implements
private Intent getConversationListIntent() {
// TODO [greyson] Navigation
return new Intent(this, MainActivity.class);
return MainActivity.clearTop(this);
}
private void initializeClearKeyReceiver() {

View File

@@ -35,7 +35,7 @@ public class ShortcutLauncherActivity extends AppCompatActivity {
if (rawId == null) {
Toast.makeText(this, R.string.ShortcutLauncherActivity_invalid_shortcut, Toast.LENGTH_SHORT).show();
// TODO [greyson] Navigation
startActivity(new Intent(this, MainActivity.class));
startActivity(MainActivity.clearTop(this));
finish();
return;
}
@@ -43,7 +43,7 @@ public class ShortcutLauncherActivity extends AppCompatActivity {
Recipient recipient = Recipient.live(RecipientId.from(rawId)).get();
// TODO [greyson] Navigation
TaskStackBuilder backStack = TaskStackBuilder.create(this)
.addNextIntent(new Intent(this, MainActivity.class));
.addNextIntent(MainActivity.clearTop(this));
CommunicationActions.startConversation(this, recipient, null, backStack);
finish();

View File

@@ -22,7 +22,7 @@ public class SystemSmsImportReminder extends Reminder {
context.startService(intent);
// TODO [greyson] Navigation
Intent nextIntent = new Intent(context, MainActivity.class);
Intent nextIntent = MainActivity.clearTop(context);
Intent activityIntent = new Intent(context, DatabaseMigrationActivity.class);
activityIntent.putExtra("next_intent", nextIntent);
context.startActivity(activityIntent);

View File

@@ -409,7 +409,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
if (ConversationIntents.isInvalid(getIntent())) {
Log.w(TAG, "[onCreate] Missing recipientId!");
// TODO [greyson] Navigation
startActivity(new Intent(this, MainActivity.class));
startActivity(MainActivity.clearTop(this));
finish();
return;
}
@@ -488,7 +488,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
if (ConversationIntents.isInvalid(intent)) {
Log.w(TAG, "[onNewIntent] Missing recipientId!");
// TODO [greyson] Navigation
startActivity(new Intent(this, MainActivity.class));
startActivity(MainActivity.clearTop(this));
finish();
return;
}
@@ -1982,7 +1982,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
if (isInBubble()) {
supportActionBar.setHomeAsUpIndicator(ContextCompat.getDrawable(this, R.drawable.ic_notification));
toolbar.setNavigationOnClickListener(unused -> startActivity(new Intent(Intent.ACTION_MAIN).setClass(this, MainActivity.class)));
toolbar.setNavigationOnClickListener(unused -> startActivity(MainActivity.clearTop(this)));
}
}

View File

@@ -0,0 +1,18 @@
package org.thoughtcrime.securesms.deeplinks;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import org.thoughtcrime.securesms.MainActivity;
import org.thoughtcrime.securesms.PassphraseRequiredActivity;
public class DeepLinkEntryActivity extends PassphraseRequiredActivity {
@Override
protected void onCreate(Bundle savedInstanceState, boolean ready) {
Intent intent = MainActivity.clearTop(this);
Uri data = getIntent().getData();
intent.setData(data);
startActivity(intent);
}
}

View File

@@ -112,7 +112,7 @@ public final class ChooseNewAdminActivity extends PassphraseRequiredActivity {
if (updateResult.isSuccess()) {
String title = Recipient.externalGroupExact(this, groupId).getDisplayName(this);
Toast.makeText(this, getString(R.string.ChooseNewAdminActivity_you_left, title), Toast.LENGTH_LONG).show();
startActivity(new Intent(this, MainActivity.class));
startActivity(MainActivity.clearTop(this));
finish();
} else {
done.setClickable(true);

View File

@@ -264,7 +264,7 @@ public class ManageGroupFragment extends LoggingFragment {
});
leaveGroup.setVisibility(groupId.isPush() ? View.VISIBLE : View.GONE);
leaveGroup.setOnClickListener(v -> LeaveGroupDialog.handleLeavePushGroup(requireActivity(), groupId.requirePush(), () -> startActivity(new Intent(requireActivity(), MainActivity.class))));
leaveGroup.setOnClickListener(v -> LeaveGroupDialog.handleLeavePushGroup(requireActivity(), groupId.requirePush(), () -> startActivity(MainActivity.clearTop(context))));
viewModel.getDisappearingMessageTimer().observe(getViewLifecycleOwner(), string -> disappearingMessages.setText(string));

View File

@@ -146,7 +146,7 @@ public final class PushDecryptMessageJob extends BaseJob {
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setContentTitle(context.getString(R.string.PushDecryptJob_new_locked_message))
.setContentText(context.getString(R.string.PushDecryptJob_unlock_to_view_pending_messages))
.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0))
.setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0))
.setDefaults(NotificationCompat.DEFAULT_SOUND | NotificationCompat.DEFAULT_VIBRATE)
.build());

View File

@@ -30,7 +30,7 @@ public class MultipleRecipientNotificationBuilder extends AbstractNotificationBu
setSmallIcon(R.drawable.ic_notification);
setContentTitle(context.getString(R.string.app_name));
// TODO [greyson] Navigation
setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0));
setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0));
setCategory(NotificationCompat.CATEGORY_MESSAGE);
setGroupSummary(true);

View File

@@ -18,9 +18,6 @@ public class PendingMessageNotificationBuilder extends AbstractNotificationBuild
public PendingMessageNotificationBuilder(Context context, NotificationPrivacyPreference privacy) {
super(context, privacy);
// TODO [greyson] Navigation
Intent intent = new Intent(context, MainActivity.class);
setSmallIcon(R.drawable.ic_notification);
setColor(context.getResources().getColor(R.color.core_ultramarine));
setCategory(NotificationCompat.CATEGORY_MESSAGE);
@@ -29,7 +26,8 @@ public class PendingMessageNotificationBuilder extends AbstractNotificationBuild
setContentText(context.getString(R.string.MessageNotifier_open_signal_to_check_for_recent_notifications));
setTicker(context.getString(R.string.MessageNotifier_open_signal_to_check_for_recent_notifications));
setContentIntent(PendingIntent.getActivity(context, 0, intent, 0));
// TODO [greyson] Navigation
setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0));
setAutoCancel(true);
setAlarms(null, RecipientDatabase.VibrateState.DEFAULT);

View File

@@ -29,7 +29,7 @@ public final class PinRestoreActivity extends AppCompatActivity {
}
void navigateToPinCreation() {
final Intent main = new Intent(this, MainActivity.class);
final Intent main = MainActivity.clearTop(this);
final Intent createPin = CreateKbsPinActivity.getIntentForPinCreate(this);
final Intent chained = PassphraseRequiredActivity.chainIntent(createPin, main);

View File

@@ -231,7 +231,7 @@ public class PinRestoreEntryFragment extends LoggingFragment {
Activity activity = requireActivity();
if (Recipient.self().getProfileName().isEmpty() || !AvatarHelper.hasAvatar(activity, Recipient.self().getId())) {
final Intent main = new Intent(activity, MainActivity.class);
final Intent main = MainActivity.clearTop(activity);
final Intent profile = EditProfileActivity.getIntentForUserProfile(activity);
profile.putExtra("next_intent", main);
@@ -239,7 +239,7 @@ public class PinRestoreEntryFragment extends LoggingFragment {
} else {
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
startActivity(new Intent(activity, MainActivity.class));
startActivity(MainActivity.clearTop(activity));
}
activity.finish();

View File

@@ -35,7 +35,7 @@ public final class RegistrationCompleteFragment extends BaseRegistrationFragment
if (SignalStore.storageServiceValues().needsAccountRestore()) {
activity.startActivity(new Intent(activity, PinRestoreActivity.class));
} else if (!isReregister()) {
final Intent main = new Intent(activity, MainActivity.class);
final Intent main = MainActivity.clearTop(activity);
final Intent profile = EditProfileActivity.getIntentForUserProfile(activity);
Intent kbs = CreateKbsPinActivity.getIntentForPinCreate(requireContext());

View File

@@ -136,7 +136,7 @@ public class ApplicationMigrationService extends Service
builder.setOngoing(true);
builder.setProgress(100, 0, false);
// TODO [greyson] Navigation
builder.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0));
builder.setContentIntent(PendingIntent.getActivity(this, 0, MainActivity.clearTop(this), 0));
stopForeground(true);
startForeground(NotificationIds.APPLICATION_MIGRATION, builder.build());
@@ -188,7 +188,7 @@ public class ApplicationMigrationService extends Service
builder.setContentTitle(context.getString(R.string.ApplicationMigrationService_import_complete));
builder.setContentText(context.getString(R.string.ApplicationMigrationService_system_database_import_is_complete));
// TODO [greyson] Navigation
builder.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0));
builder.setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0));
builder.setWhen(System.currentTimeMillis());
builder.setDefaults(Notification.DEFAULT_VIBRATE);
builder.setAutoCancel(true);

View File

@@ -108,7 +108,7 @@ public final class GenericForegroundService extends Service {
.setSmallIcon(active.iconRes)
.setContentTitle(active.title)
.setProgress(active.progressMax, active.progress, active.indeterminate)
.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0))
.setContentIntent(PendingIntent.getActivity(this, 0, MainActivity.clearTop(this), 0))
.build());
}

View File

@@ -287,9 +287,7 @@ public class KeyCachingService extends Service {
private PendingIntent buildLaunchIntent() {
// TODO [greyson] Navigation
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
return PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
return PendingIntent.getActivity(getApplicationContext(), 0, MainActivity.clearTop(this), 0);
}
private static PendingIntent buildExpirationPendingIntent(@NonNull Context context) {

View File

@@ -2,6 +2,15 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Signal.Transparent" parent="Theme.AppCompat">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
<style name="Theme.Signal.DayNight.NoActionBar" parent="TextSecure.LightNoActionBar">
</style>