Open source Android, iOS and Web app for learning about and managing digital and physical security. From how to send a secure message to dealing with a kidnap. Umbrella has best practice guides in over 40 topics in multiple languages. Used daily by people working in high risk countries - journalists, activists, diplomats, business travelers etc.
Sometimes when I am navigating on checkList view I get nullPointExceptions
java.lang.NullPointerException: at org.secfirst.umbrella.adapters.CheckListAdapter.getCount (CheckListAdapter.java:44) at android.widget.ListView.setAdapter (ListView.java:493) at org.secfirst.umbrella.fragments.TabbedFragment$CheckItemFragment.onCreateView (TabbedFragment.java:438) at android.support.v4.app.Fragment.performCreateView (Fragment.java:2261) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1750) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1819) at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2332) at android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:2209) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:649) at android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:145) at android.support.v4.view.ViewPager.populate (ViewPager.java:1238) at android.support.v4.view.ViewPager.populate (ViewPager.java:1086) at android.support.v4.view.ViewPager$3.run (ViewPager.java:267) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:874) at android.view.Choreographer.doCallbacks (Choreographer.java:686) at android.view.Choreographer.doFrame (Choreographer.java:618) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:860) at android.os.Handler.handleCallback (Handler.java:751) at android.os.Handler.dispatchMessage (Handler.java:95) at android.os.Looper.loop (Looper.java:163) at android.app.ActivityThread.main (ActivityThread.java:6228) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
At present, a user who uses Umbrella for their work, who then loses/changes their phone or bricks it, cannot do anything. Create a feature to allow them to do an encrypted backup which can be transferred and imported to another device.
Going to dashboard, which refreshes with the latest data, going to the bottom of the available data and then pulling down (to refresh), leads to frozen screen. Cannot go back up to the top of the feed, can only go to menu and navigate away.
The utility of the of security dashboard is limited by the fact that a user has to go into the app to actually check the dashboard updates (from the UN, CDC etc). It would be useful to have a feature for a user to be able to set
a) Whether they want dashboard updates to appear in the notification tray
b) How often they want the dashboard updates to appear in the tray (e.g immediately, one per hour, per day, per week etc)
c) Whether they want none, silent or audio alert
After setting password in the settings, then trying to "log out," leads back to the password setting screen again. Not actually able to logout correctly.
Users have requested "Masking App" capability for the app. E.g the ability to use a masking/disguise to the app, so that Umbrella doesn't appear on the device. Similar to the work of the guys at Panic Button who have used a calculator and other things to achieve this:
java.lang.NullPointerException: at org.secfirst.umbrella.fragments.CheckItemFragment.populateAdapter (CheckItemFragment.java:147) at org.secfirst.umbrella.fragments.CheckItemFragment.onCreateView (CheckItemFragment.java:142) at android.support.v4.app.Fragment.performCreateView (Fragment.java:2261) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1750) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1819) at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2332) at android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:2209) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:649) at android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:145) at android.support.v4.view.ViewPager.populate (ViewPager.java:1238) at android.support.v4.view.ViewPager.setCurrentItemInternal (ViewPager.java:663) at android.support.v4.view.ViewPager.setCurrentItemInternal (ViewPager.java:625) at android.support.v4.view.ViewPager.setCurrentItem (ViewPager.java:606) at org.secfirst.umbrella.fragments.TabbedFragment$TabbedContentFragment$1.onClick (TabbedFragment.java:252) at android.view.View.performClick (View.java:6294) at android.view.View$PerformClick.run (View.java:24770) at android.os.Handler.handleCallback (Handler.java:790) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:164) at android.app.ActivityThread.main (ActivityThread.java:6494) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:807)
Under "My Security -> My Checklists," create a feature for users to be able to begin, see and use a completely blank checklist - without the need to have only Lesson Checklists
Setting feed to a country. Then closing the app and opening it up again. Leads to the feed not staying consistent. The stuff you have downloaded no longer appears. You must pull refresh again
Need to warn the user that choosing to export the checklist will mean the data is no longer encrypted in the app. Warning should probably be each time they do it but with an option not to receive the warning again.
When the user has already set the password in the "Settings," and then also ticked the "Don't ask for password again" button in settings, when clicking "Log-out" the user is asked to set the password once again.
java.lang.NullPointerException: at org.secfirst.umbrella.adapters.FilledOutFormListAdapter.onBindViewHolder (FilledOutFormListAdapter.java:68) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder (RecyclerView.java:6508) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder (RecyclerView.java:6541) at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline (RecyclerView.java:5484) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java:5750) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5589) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5585) at android.support.v7.widget.LinearLayoutManager$LayoutState.next (LinearLayoutManager.java:2231) at android.support.v7.widget.LinearLayoutManager.layoutChunk (LinearLayoutManager.java:1558) at android.support.v7.widget.LinearLayoutManager.fill (LinearLayoutManager.java:1518) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren (LinearLayoutManager.java:610) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2 (RecyclerView.java:3719) at android.support.v7.widget.RecyclerView.onMeasure (RecyclerView.java:3135) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.widget.LinearLayout.measureVertical (LinearLayout.java:958) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.support.v4.widget.SwipeRefreshLayout.onMeasure (SwipeRefreshLayout.java:627) at android.view.View.measure (View.java:22104) at android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1632) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout.java:1060) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:139) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure (DecorView.java:722) at android.view.View.measure (View.java:22104) at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2441) at android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1522) at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1775) at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1410) at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6834) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:966) at android.view.Choreographer.doCallbacks (Choreographer.java:778) at android.view.Choreographer.doFrame (Choreographer.java:713) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:952) at android.os.Handler.handleCallback (Handler.java:789) at android.os.Handler.dispatchMessage (Handler.java:98) at android.os.Looper.loop (Looper.java:164) at android.app.ActivityThread.main (ActivityThread.java:6809) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)
There's no LICENSE document in this repository, which means that this isn't truly freedom-respecting software. Please choose a license, and note that by omitting a license, you are not opting out of copyright law.
When adding a checklist item it works, but when you go to tick it. Leads to crash. When you reopen the app and go to the checklist. The item is ticked.
When you open the app for the first time and navigate through the different sections, some of the coachmarks are appearing in the incorrect place. For example. The coachmarks for lessons are appearing in the checklists.
In settings, when you have switch from English to Spanish. It works fine. When you then go to Chinese, for some reason you get a mix of languages on the Dashboard.
java.lang.IllegalStateException: at com.j256.ormlite.stmt.SelectIterator.next (SelectIterator.java:183) at com.j256.ormlite.dao.LazyForeignCollection.toArray (LazyForeignCollection.java:217) at java.util.ArrayList.<init> (ArrayList.java:191) at org.secfirst.umbrella.fragments.StepFragment.onCreateView (StepFragment.java:121) at android.support.v4.app.Fragment.performCreateView (Fragment.java:2261) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1750) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1819) at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2332)
Add masking app image to the explainer (also and image of the device being shaken), so that the user knows what to look for when it disappears and it's easier to visual remember what they are supposed to do.
Also, tell them in may take up to 30 seconds for the Umbrella App to initially mask, as sometimes there is a slowness.
As of now Umbrella has reached 0.2.5 on master and 0.2.4 on Google Play. However, the latest tag on GitHub is still 0.1.9. Could you please release some tags so that it would be easier for putting the app into F-Droid main archive?
At present the masking app only functions until the user shakes the masked app and opens Umbrella again. The app then reappears on the Android Menu. This might be confusing to users. We should add a setting that allows users to keep the app hidden, open it through the masked app, use Umbrella, then close it and it returns to the masked app - with Umbrella not appearing on the Android Menu directly until they change a setting for that.