mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-02 14:35:21 +00:00
Improve password caching notification UI & UX
On Jelly Bean and above: - Use the standard notification style for a better and consistent visual appearance - Use the JB notification actions API for the locking action - Use a lower notification priority to prioritize other notifications over TextSecure On ICS: - Use the existing custom notification layout Everywhere: - Allow opening the app itself from the notification - Simplify strings: don't talk about a "cached passphrase" but about the app being "unlocked"/"locked"
This commit is contained in:
parent
ca92b4d904
commit
eb1b762a76
@ -28,7 +28,7 @@
|
|||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:fadingEdge="horizontal"
|
android:fadingEdge="horizontal"
|
||||||
android:ellipsize="marquee"
|
android:ellipsize="marquee"
|
||||||
android:text="@string/KeyCachingService_textsecure_passphrase_cached"
|
android:text="@string/KeyCachingService_textsecure_passphrase_cached_with_lock"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
@ -246,8 +246,10 @@
|
|||||||
<string name="ApplicationMigrationService_importing_text_messages">Importing Text Messages</string>
|
<string name="ApplicationMigrationService_importing_text_messages">Importing Text Messages</string>
|
||||||
|
|
||||||
<!-- KeyCachingService -->
|
<!-- KeyCachingService -->
|
||||||
<string name="KeyCachingService_textsecure_passphrase_cached">TextSecure Passphrase Cached</string>
|
<string name="KeyCachingService_textsecure_passphrase_cached">Touch to open.</string>
|
||||||
<string name="KeyCachingService_passphrase_cached">Passphrase Cached</string>
|
<string name="KeyCachingService_textsecure_passphrase_cached_with_lock">Touch to open, or touch the lock to close.</string>
|
||||||
|
<string name="KeyCachingService_passphrase_cached">TextSecure is unlocked</string>
|
||||||
|
<string name="KeyCachingService_lock">Lock with passphrase</string>
|
||||||
|
|
||||||
<!-- MessageNotifier -->
|
<!-- MessageNotifier -->
|
||||||
<string name="MessageNotifier_d_new_messages">%d new messages</string>
|
<string name="MessageNotifier_d_new_messages">%d new messages</string>
|
||||||
@ -547,7 +549,7 @@
|
|||||||
<!-- text_secure_normal -->
|
<!-- text_secure_normal -->
|
||||||
<string name="text_secure_normal__menu_new_message">New Message</string>
|
<string name="text_secure_normal__menu_new_message">New Message</string>
|
||||||
<string name="text_secure_normal__menu_settings">Settings</string>
|
<string name="text_secure_normal__menu_settings">Settings</string>
|
||||||
<string name="text_secure_normal__menu_clear_passphrase">Clear Passphrase</string>
|
<string name="text_secure_normal__menu_clear_passphrase">Lock</string>
|
||||||
<string name="text_secure_normal__mark_all_as_read">Mark All Read</string>
|
<string name="text_secure_normal__mark_all_as_read">Mark All Read</string>
|
||||||
|
|
||||||
<!-- verify_keys -->
|
<!-- verify_keys -->
|
||||||
|
@ -190,15 +190,29 @@ public class KeyCachingService extends Service {
|
|||||||
|
|
||||||
private void foregroundServiceModern() {
|
private void foregroundServiceModern() {
|
||||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
|
||||||
|
|
||||||
|
builder.setContentTitle(getString(R.string.KeyCachingService_passphrase_cached));
|
||||||
|
builder.setContentText(getString(R.string.KeyCachingService_textsecure_passphrase_cached));
|
||||||
|
builder.setSmallIcon(R.drawable.icon_cached);
|
||||||
|
builder.setWhen(0);
|
||||||
|
builder.setPriority(Notification.PRIORITY_LOW);
|
||||||
|
|
||||||
|
builder.addAction(R.drawable.ic_menu_lock_holo_dark, getString(R.string.KeyCachingService_lock), buildLockIntent());
|
||||||
|
builder.setContentIntent(buildLaunchIntent());
|
||||||
|
|
||||||
|
stopForeground(true);
|
||||||
|
startForeground(SERVICE_RUNNING_ID, builder.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void foregroundServiceICS() {
|
||||||
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
|
||||||
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.key_caching_notification);
|
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.key_caching_notification);
|
||||||
|
|
||||||
Intent intent = new Intent(this, KeyCachingService.class);
|
remoteViews.setOnClickPendingIntent(R.id.lock_cache_icon, buildLockIntent());
|
||||||
intent.setAction(PASSPHRASE_EXPIRED_EVENT);
|
|
||||||
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
|
|
||||||
remoteViews.setOnClickPendingIntent(R.id.lock_cache_icon, pendingIntent);
|
|
||||||
|
|
||||||
builder.setSmallIcon(R.drawable.icon_cached);
|
builder.setSmallIcon(R.drawable.icon_cached);
|
||||||
builder.setContent(remoteViews);
|
builder.setContent(remoteViews);
|
||||||
|
builder.setContentIntent(buildLaunchIntent());
|
||||||
|
|
||||||
stopForeground(true);
|
stopForeground(true);
|
||||||
startForeground(SERVICE_RUNNING_ID, builder.build());
|
startForeground(SERVICE_RUNNING_ID, builder.build());
|
||||||
@ -208,14 +222,11 @@ public class KeyCachingService extends Service {
|
|||||||
Notification notification = new Notification(R.drawable.icon_cached,
|
Notification notification = new Notification(R.drawable.icon_cached,
|
||||||
getString(R.string.KeyCachingService_textsecure_passphrase_cached),
|
getString(R.string.KeyCachingService_textsecure_passphrase_cached),
|
||||||
System.currentTimeMillis());
|
System.currentTimeMillis());
|
||||||
Intent intent = new Intent(this, RoutingActivity.class);
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
||||||
|
|
||||||
PendingIntent launchIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
|
|
||||||
notification.setLatestEventInfo(getApplicationContext(),
|
notification.setLatestEventInfo(getApplicationContext(),
|
||||||
getString(R.string.KeyCachingService_passphrase_cached),
|
getString(R.string.KeyCachingService_passphrase_cached),
|
||||||
getString(R.string.KeyCachingService_textsecure_passphrase_cached),
|
getString(R.string.KeyCachingService_textsecure_passphrase_cached),
|
||||||
launchIntent);
|
buildLaunchIntent());
|
||||||
|
notification.tickerText = null;
|
||||||
|
|
||||||
stopForeground(true);
|
stopForeground(true);
|
||||||
startForeground(SERVICE_RUNNING_ID, notification);
|
startForeground(SERVICE_RUNNING_ID, notification);
|
||||||
@ -227,8 +238,13 @@ public class KeyCachingService extends Service {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 11) foregroundServiceModern();
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||||
else foregroundServiceLegacy();
|
foregroundServiceModern();
|
||||||
|
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
|
||||||
|
foregroundServiceICS();
|
||||||
|
} else {
|
||||||
|
foregroundServiceLegacy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void broadcastNewSecret() {
|
private void broadcastNewSecret() {
|
||||||
@ -246,6 +262,19 @@ public class KeyCachingService extends Service {
|
|||||||
.getBoolean(ApplicationPreferencesActivity.DISABLE_PASSPHRASE_PREF, false);
|
.getBoolean(ApplicationPreferencesActivity.DISABLE_PASSPHRASE_PREF, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PendingIntent buildLockIntent() {
|
||||||
|
Intent intent = new Intent(this, KeyCachingService.class);
|
||||||
|
intent.setAction(PASSPHRASE_EXPIRED_EVENT);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
|
||||||
|
return pendingIntent;
|
||||||
|
}
|
||||||
|
|
||||||
|
private PendingIntent buildLaunchIntent() {
|
||||||
|
Intent intent = new Intent(this, RoutingActivity.class);
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||||
|
PendingIntent launchIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
|
||||||
|
return launchIntent;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBinder onBind(Intent arg0) {
|
public IBinder onBind(Intent arg0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user