From 172c10b738c969c52b29813bfa4f19573490c661 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 15 Jan 2016 09:49:25 +0100 Subject: [PATCH 1/4] use string resource for "Chat Encryption" preference --- res/xml/preferences.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index ea780b61f..8b17e61e6 100755 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -23,7 +23,7 @@ - Date: Fri, 15 Jan 2016 10:22:54 +0100 Subject: [PATCH 2/4] fix crash on shutdown/lock with progress dialog WindowManager E android.view.WindowLeaked: Activity org.awesomeapp.messenger.RouterActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41bea2d8 V.E..... R......D 0,0-1140,192} that was originally added here E at android.view.ViewRootImpl.(ViewRootImpl.java:346) E at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248) E at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) E at android.app.Dialog.show(Dialog.java:286) E at org.awesomeapp.messenger.RouterActivity$1.onPreExecute(RouterActivity.java:493) E at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587) E at android.os.AsyncTask.execute(AsyncTask.java:535) E at org.awesomeapp.messenger.RouterActivity.completeShutdown(RouterActivity.java:481) E at org.awesomeapp.messenger.RouterActivity.openEncryptedStores(RouterActivity.java:550) E at org.awesomeapp.messenger.RouterActivity.onCacheWordOpened(RouterActivity.java:431) E at info.guardianproject.cacheword.CacheWordHandler.checkCacheWordState(CacheWordHandler.java:409) E at info.guardianproject.cacheword.CacheWordHandler.access$100(CacheWordHandler.java:27) E at info.guardianproject.cacheword.CacheWordHandler$1.onReceive(CacheWordHandler.java:440) E at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297) E at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46) E at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116) E at android.os.Handler.dispatchMessage(Handler.java:102) E at android.os.Looper.loop(Looper.java:136) E at android.app.ActivityThread.main(ActivityThread.java:5001) E at java.lang.reflect.Method.invokeNative(Native Method) E at java.lang.reflect.Method.invoke(Method.java:515) E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) E at dalvik.system.NativeStart.main(Native Method) dalvikvm I Jit: resizing JitTable from 4096 to 8192 AndroidRuntime D Shutting down VM dalvikvm W threadid=1: thread exiting with uncaught exception (group=0x4160bba8) HockeyApp D Writing unhandled exception to: /data/data/org.awesomeapp.messenger.debug/files/161c58f9-1887-4501-bcbf-6e95728eabe6.stacktrace AndroidRuntime E FATAL EXCEPTION: main E Process: org.awesomeapp.messenger.debug, PID: 19550 E java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView{41bea2d8 V.E..... R......D 0,0-1140,192} not attached to window manager E at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:370) E at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:299) E at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:84) E at android.app.Dialog.dismissDialog(Dialog.java:329) E at android.app.Dialog.dismiss(Dialog.java:312) E at org.awesomeapp.messenger.RouterActivity$1.onPostExecute(RouterActivity.java:533) E at org.awesomeapp.messenger.RouterActivity$1.onPostExecute(RouterActivity.java:481) E at android.os.AsyncTask.finish(AsyncTask.java:632) E at android.os.AsyncTask.access$600(AsyncTask.java:177) E at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) E at android.os.Handler.dispatchMessage(Handler.java:102) E at android.os.Looper.loop(Looper.java:136) E at android.app.ActivityThread.main(ActivityThread.java:5001) E at java.lang.reflect.Method.invokeNative(Native Method) E at java.lang.reflect.Method.invoke(Method.java:515) E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) E at dalvik.system.NativeStart.main(Native Method) Process I Sending signal. PID: 19550 SIG: 9 --- .../guardianproject/otr/app/im/app/WelcomeActivity.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/info/guardianproject/otr/app/im/app/WelcomeActivity.java b/src/info/guardianproject/otr/app/im/app/WelcomeActivity.java index aad4f8478..4b5febacb 100644 --- a/src/info/guardianproject/otr/app/im/app/WelcomeActivity.java +++ b/src/info/guardianproject/otr/app/im/app/WelcomeActivity.java @@ -61,6 +61,8 @@ public class WelcomeActivity extends ThemeableActivity implements ICacheWordSubs private boolean mDoSignIn = true; + private ProgressDialog dialog; + static final String[] PROVIDER_PROJECTION = { Imps.Provider._ID, Imps.Provider.NAME, Imps.Provider.FULLNAME, Imps.Provider.CATEGORY, Imps.Provider.ACTIVE_ACCOUNT_ID, @@ -218,6 +220,9 @@ protected void onDestroy() { if (mCacheWord != null) mCacheWord.disconnect(); + + if (dialog != null) + dialog.dismiss(); } @Override @@ -445,9 +450,6 @@ private void completeShutdown () } new AsyncTask() { - private ProgressDialog dialog; - - @Override protected void onPreExecute() { if (mApp.getActiveConnections().size() > 0) From 9ae2dc7f71f46bda4b552edd0818286d1663c059 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 15 Jan 2016 10:54:47 +0100 Subject: [PATCH 3/4] after receiving panic trigger, quit and remove from history This makes the app fully exit, and removes it from the Recent Apps listing with the goal of hiding whatever the user was currently watching, and/or searching for. PanicKit provides a common framework for creating "panic button" apps that can trigger actions in "panic responder" apps. In this case, the response is to lock the app, if it has been configured to do so https://dev.guardianproject.info/projects/panic/wiki --- AndroidManifest.xml | 12 +++++++ .../otr/app/im/app/ExitActivity.java | 36 +++++++++++++++++++ .../app/im/app/PanicResponderActivity.java | 31 ++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 src/info/guardianproject/otr/app/im/app/ExitActivity.java create mode 100644 src/info/guardianproject/otr/app/im/app/PanicResponderActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 0184b2fbe..742c9383e 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -185,6 +185,18 @@ + + + + + + + = 21) { + finishAndRemoveTask(); + } else { + finish(); + } + + System.exit(0); + } + + public static void exitAndRemoveFromRecentApps(Activity activity) { + Intent intent = new Intent(activity, ExitActivity.class); + + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS + | Intent.FLAG_ACTIVITY_CLEAR_TASK + | Intent.FLAG_ACTIVITY_NO_ANIMATION); + + activity.startActivity(intent); + } +} diff --git a/src/info/guardianproject/otr/app/im/app/PanicResponderActivity.java b/src/info/guardianproject/otr/app/im/app/PanicResponderActivity.java new file mode 100644 index 000000000..c4b85394d --- /dev/null +++ b/src/info/guardianproject/otr/app/im/app/PanicResponderActivity.java @@ -0,0 +1,31 @@ + +package info.guardianproject.otr.app.im.app; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; + +public class PanicResponderActivity extends Activity { + + public static final String PANIC_TRIGGER_ACTION = "info.guardianproject.panic.action.TRIGGER"; + + @SuppressLint("NewApi") + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Intent intent = getIntent(); + if (intent != null && PANIC_TRIGGER_ACTION.equals(intent.getAction())) { + WelcomeActivity.shutdownAndLock(this); + ExitActivity.exitAndRemoveFromRecentApps(this); + } + + if (Build.VERSION.SDK_INT >= 21) { + finishAndRemoveTask(); + } else { + finish(); + } + } +} From 13c37e7cef8050b0f53d26dc7f4832caadb505c6 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 15 Jan 2016 11:01:08 +0100 Subject: [PATCH 4/4] make "Shutdown & Lock" also clear from "Recent Apps" --- src/info/guardianproject/otr/app/im/app/NewChatActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/info/guardianproject/otr/app/im/app/NewChatActivity.java b/src/info/guardianproject/otr/app/im/app/NewChatActivity.java index 34d302a7e..b38714fd1 100644 --- a/src/info/guardianproject/otr/app/im/app/NewChatActivity.java +++ b/src/info/guardianproject/otr/app/im/app/NewChatActivity.java @@ -982,6 +982,7 @@ public boolean onMenuItemClick(MenuItem item) { case R.id.menu_exit: WelcomeActivity.shutdownAndLock(NewChatActivity.this); + ExitActivity.exitAndRemoveFromRecentApps(NewChatActivity.this); return true; case R.id.menu_add_contact: