Modern About Box for an Android App

Related tags

UI/UX android about
Overview

Circle CI Release Downloads GitHub license

About Box

A modern About Box for an Android App built on the daniel-stoneuk/material-about-library.

Easily display the common items of an About Box in a modern Android friendly way

About

Android About Box is configured with a set of (mostly) strings for the company name, twitter and Facebook accounts, website, and filenames to html files for help files, privacy policy etc.

When triggered from a menu item, it will display the app name, icon and version, provide links to contact support, leave a review, share the app, go to other apps by the same company in the app store -- as well as links to Facebook etc.

You can omit most features if they don't apply (e.g. like website), by not setting the values.

Installation Instructions

Add the JitPack.io repository to your root build.gradle:

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

Add a dependency to your application related build.gradle

dependencies {
    compile 'com.github.eggheadgames:android-about-box:<actual version>'
}

Setup AboutBox

Add AboutBox configuration to your Application class

        AboutConfig aboutConfig = AboutConfig.getInstance();
        aboutConfig.appName = getString(R.string.app_name);
        aboutConfig.appIcon = R.mipmap.ic_launcher;
        aboutConfig.version = "1.0.0";
        aboutConfig.author = "Tolstoy";
        aboutConfig.aboutLabelTitle = "About App";
        aboutConfig.packageName = getApplicationContext().getPackageName();
        aboutConfig.buildType = google ? AboutConfig.BuildType.GOOGLE : AboutConfig.BuildType.AMAZON;

        aboutConfig.facebookUserName = FACEBOOK_USER_NAME;
        aboutConfig.twitterUserName = TWITTER_USER_NAME;
        aboutConfig.webHomePage = WEB_HOME_PAGE;

        // app publisher for "Try Other Apps" item
        aboutConfig.appPublisher = APP_PUBLISHER;

        // if pages are stored locally, then you need to override aboutConfig.dialog to be able use custom WebView
        aboutConfig.companyHtmlPath = COMPANY_HTML_PATH;
        aboutConfig.privacyHtmlPath = PRIVACY_HTML_PATH;
        aboutConfig.acknowledgmentHtmlPath = ACKNOWLEDGMENT_HTML_PATH;

        aboutConfig.dialog = new IDialog() {
            @Override
            public void open(AppCompatActivity appCompatActivity, String url, String tag) {
               // handle custom implementations of WebView. It will be called when user click to web items. (Example: "Privacy", "Acknowledgments" and "About")
            }
        };

        aboutConfig.analytics = new IAnalytic() {
            @Override
            public void logUiEvent(String s, String s1) {
               // handle log events.
            }

            @Override
            public void logException(Exception e, boolean b) {
               // handle exception events.
            }
        };
        // set it only if aboutConfig.analytics is defined.
        aboutConfig.logUiEventName = "Log";

        // Contact Support email details
        aboutConfig.emailAddress = EMAIL_ADDRESS;
        aboutConfig.emailSubject = EMAIL_SUBJECT;
        aboutConfig.emailBody = EMAIL_BODY;

Open the About Box from your app

        AboutActivity.launch(activity);

Sharing

By default, the default Android share intent will be called with the values specified in shareMessage and sharingTitle. For example:

        aboutConfig.shareMessage = getString(R.string.share_message);
        aboutConfig.sharingTitle = getString(R.string.sharing_title);

The share_message string will have an app store URL appended to it (appropriately constructed for Google Play or Amazon).

Alternatively, you can provide a custom sharing function (and omit shareMessage and sharingTitle):

       aboutConfig.share = new IShare() {
           @Override
           public void share(Activity activity) {
               // do custom sharing
           }
       };

Theme

If you add the following to your AndroidManifest.xml file, the About Box will use these colours. This allows you to match your app colours:

        <activity
            android:name="com.eggheadgames.aboutbox.activity.AboutActivity"
            android:theme="@style/AppTheme.MaterialAboutActivity"/>

Ensure that AppTheme.MaterialAboutActivity theme extends either of these themes, and apply primary & accent colours:

Theme.MaterialComponents.DayNight
Theme.MaterialComponents.DayNight.DarkActionBar
Theme.MaterialComponents.Light
Theme.MaterialComponents.Light.DarkActionBar
  <style name="AppTheme.MaterialAboutActivity" parent="Theme.MaterialComponents.DayNight.DarkActionBar" >
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

Screenshot

Comments
  • Open about box with a button

    Open about box with a button

    I would like to implement the about activity only when the user taps an icon of about (or in a drop-down-the three dots menu) in app bar. How to implement that?

    opened by Kvaibhav01 9
  • Empty cards are no longer displayed

    Empty cards are no longer displayed

    Previously, cards with no items in them still go displayed in About Activity. I fixed this by adding checks to see if a card has an item to display before adding it to About Activity.

    opened by Ninjaman494 7
  • Facebook link do not open

    Facebook link do not open

    Facebook link do not open facebook app with the correct page or profile url. It looks seem the code for facebook app is changed in the lastets versions. I have tried and it works with "fb://page/" + FACEBOOK_PAGE_ID. The code in this library using this URI: "fb://profile/" + name Look at this line inAboutBoxUtils.java: Intent intent = new Intent("android.intent.action.VIEW", Uri.parse("fb://profile/" + name));

    Please can you update the code?

    Thank you and i'm sorry for my bad english.

    opened by agos74 5
  • Various Minor Fixes

    Various Minor Fixes

    • Switched to proper link to Google Play Store Publisher, per official documentation.
      • See: https://developer.android.com/distribute/marketing-tools/linking-to-google-play.html#OpeningPublisher
    • Fixed home page URL cleaning for display.
      • Protocol (https(s)://) and trailing slash removed, instead of removing all slashes.
    • Added default shareMessage if not set.
      • Set to Google Play or Amazon Store app page.
    opened by ethauvin 4
  • Remove cards from About Activity

    Remove cards from About Activity

    Is there a way to remove cards from About Activity? I know you can leave options null so that they don;t appear, but the an empty card will still appear. Can you remove the card entirely or do I need to implement it myself?

    opened by Ninjaman494 3
  • Adding other categories in the activity

    Adding other categories in the activity

    I'm completely new to this. I've added the about activity but I can't see the Leave Review, Try Other Apps, About Egghead Games, Privacy Policy and Acknowledgement categories! Do I need to implement them manually or there is a code for it?

    opened by Kvaibhav01 3
  • Force close on launching AboutActivity

    Force close on launching AboutActivity

    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2 Process: com.ingridtech.antivirus, PID: 782 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:326) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:244) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replace(java.lang.CharSequence, java.lang.CharSequence)' on a null object reference at com.eggheadgames.aboutbox.activity.AboutActivity.buildSocialNetworksCard(AboutActivity.java:180) at com.eggheadgames.aboutbox.activity.AboutActivity.getMaterialAboutList(AboutActivity.java:41) at com.danielstone.materialaboutlibrary.MaterialAboutActivity$ListTask.doInBackground(MaterialAboutActivity.java:156) at com.danielstone.materialaboutlibrary.MaterialAboutActivity$ListTask.doInBackground(MaterialAboutActivity.java:146) at android.os.AsyncTask$2.call(AsyncTask.java:306) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:244)  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)  at java.lang.Thread.run(Thread.java:761) 

    opened by sajorahasan 3
  • Twitter profile doesn't opens

    Twitter profile doesn't opens

    When I tap on the Twitter list in the About activity, the Twitter app opens for a second, displays a toast "Cannot load the user's info. Please try again." How to resolve this? I've the following code line:

    private static final String TWITTER_USER_NAME = "@vaibhav_khulbe"; and it's used as: aboutConfig.twitterUserName = TWITTER_USER_NAME;

    I've also tried adding the Twitter profile URL but it displays the same toast. The link works fine with Chrome in my emulator.

    opened by Kvaibhav01 2
  • Copyright & Author & About Company

    Copyright & Author & About Company

    I think the top section should include an Author and Copyright if specified. Thoughts?

    The About Company X should be optional if no title is set.

    I can take a crack at the implementation, pretty straightforward.

    opened by ethauvin 2
  • Privacy policy is not shown

    Privacy policy is not shown

    I recent use about box library 1.3.2 but i am not able to view privacy policy html when click on privacy policy, I am loading privacy policy html path from assets folder and my second issue is that still empty card is shown for appconfig.publisher which is set null

    opened by im5an 1
  • Improve share message

    Improve share message

    Not sure if this was an intended change previously @ethauvin, but I'm prepending the share message before the URL. I.e. so you can now have a message something like:

    "Here is a great app: " + app store url

    opened by mikemee 0
  • Add accessibility labels

    Add accessibility labels

    Let's improve accessibility as suggested by Google Play as follows:

    id/guide_toolbar/AppComatImageButton[0] "Close"

    Screen Shot 2020-07-02 at 6 15 30 pm

    id/mal_list_card - various

    I don't think the cards add much value here given that the labels are clearly defined.

    Per https://support.google.com/accessibility/android/answer/7158690, let's explicitly mark each of these cards as not requiring content:

    Decorative images or images that don't convey meaningful information graphically do not require content labels. In these cases, set an android:contentDescription attribute of "@null" or an android:importantForAccessibility attribute of "no".

    Screen Shot 2020-07-02 at 6 16 19 pm

    opened by mikemee 0
  • Check for leaks

    Check for leaks

    Per https://github.com/eggheadgames/android-about-box/issues/53#issuecomment-629323363, let's see if we're leaking:

    BTW - I'd recommend to use LeakCanary to detect leaks in this library, because I've found it to leak without even starting the AboutActivity...

    opened by mikemee 0
Releases(2.0.1)
  • 2.0.1(May 21, 2020)

    • Updated to build with the latest Android SDKs and Material About Library (Dark Mode works!)
    • Does not add cards for items with no information (thanks @Ninjaman494 for the idea)
    • Fixes a bug opening the Facebook App at the desired location (thanks @agos74 for the bug report & follow-ups 9 months later)

    We bumped the major version as you'll likely need to do a couple of things to update, specifically:

    • Configure the new facebookUserPageId value to add your company's Facebook page id so apps can open it directly
    • Change the parent theme style from:
    <style name="AppTheme.MaterialAboutActivity" parent="Theme.Mal.Light.DarkActionBar" tools:ignore="UnusedResources">
    

    to

    <style name="AppTheme.MaterialAboutActivity" parent="Theme.MaterialComponents.DayNight.DarkActionBar" tools:ignore="UnusedResources">
    
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(May 21, 2020)

    Please ignore this release and use 2.0.1 instead.

    I didn't upgrade the build.gradle version information correctly, and then when I re-tagged after fixing it, I couldn't get jitpack to rebuild it, so I bumped everything to 2.0.1 instead.

    Source code(tar.gz)
    Source code(zip)
  • 1.3.2(Oct 23, 2017)

  • 1.3.1(Oct 8, 2017)

  • 1.3.0(Oct 8, 2017)

  • 1.2.2(Sep 1, 2017)

    Improve/fix developer publisher link handling per #35

    This release also reverted from a GitFlow master + develop branch arrangement of the git repo to a simplified master + new branch for changes. This makes the "release dance" a little simpler.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Aug 30, 2017)

    This release adds a new field Author, as well as a catch-all Extra and ExtraTitle. It also includes some minor fixes for items like the publisher URL path and a better default for sharing (the app store page) if none is provided. Many thanks to @ethauvin for all of these!

    Source code(tar.gz)
    Source code(zip)
Owner
Quality Mobile Puzzle Apps
Quality Mobile Puzzle Apps
Modern GTD(Get Things Done) Android App

Neo Flow A modern GTD Android App to improve your workflow Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Pro

Grinding... 2 Dec 15, 2021
A tiny window overlay to log app internal on top of your android app

DebugOverlay A logcat alike overlay to display log messages in your app as independent overlay. Typically in android you would log some app internals

Hannes Dorfmann 150 Nov 29, 2022
This a Ride User app in which in integrate almost every features of a Ride Share app.

My-Ride-App This a Ride app(User) in which I integrate almost every features of a Ride Share app. Here I use kotlin programing language, Google map SD

Khairul Islam 5 Apr 27, 2022
Useful library to use custom fonts in your android app

EasyFonts A simple and useful android library to use custom fonts in android apps without adding fonts into asset/resource folder.Also by using this l

Vijay Vankhede 419 Sep 9, 2022
A util for setting status bar style on Android App.

StatusBarUtil A util for setting status bar style on Android App. It can work above API 19(KitKat 4.4). 中文版点我 Sample Download StatusBarUtil-Demo Chang

Jaeger 8.8k Jan 7, 2023
Make a cool intro for your Android app.

AppIntro AppIntro is an Android Library that helps you build a cool carousel intro for your App. AppIntro has support for requesting permissions and h

AppIntro Team 10.3k Dec 30, 2022
StandOut lets you easily create floating windows in your Android app.

Coming Soon Meanwhile, checkout the demo video at http://www.youtube.com/watch?v=S3vHjxonOeg Join the conversation at http://forum.xda-developers.com/

Mark Wei 1.2k Dec 12, 2022
Floating Notification for Android app - Facebook ChatHeads Notification system

FloatingView (Application Demo on Play Store) DEPRECATED SEE FloatingView Floating View for Android app - Facebook ChatHeads Notification system This

Fernandez Anthony 530 Nov 17, 2022
A lightweight non intrusive app rate reminder for Android

Discreet App Rate A lightweight non intrusive app rate reminder for Android Download repositories { mavenCentral() } dependencies { compile '

Nicolas POMEPUY 469 Nov 10, 2022
Android library implementing a poppy view on scroll, similar to the one found in the Google Plus app

PoppyView PoppyView is a library which implements view on the bottom which come and go relative to the user scroll. It can be seen in the Google plus

Flavien Laurent 409 Nov 23, 2022
Floating Notification for Android app - Facebook ChatHeads Notification system

FloatingView (Application Demo on Play Store) DEPRECATED SEE FloatingView Floating View for Android app - Facebook ChatHeads Notification system This

Fernandez Anthony 530 Nov 17, 2022
Android Material Json Form Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular format.

Android Json Wizard Android Json Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular f

Vijay Rawat 355 Nov 11, 2022
Make a cool intro for your Android app.

AppIntro AppIntro is an Android Library that helps you build a cool carousel intro for your App. AppIntro has support for requesting permissions and h

AppIntro Team 40 Jan 3, 2023
Implement a simple and funny Android animation —— the emoji rain in WeChat app.

中文版文档 Emoji Rain Hey, it's raining emoji! This is a really simple and funny animation for Android. You could find similar animations when sending "Hap

LoLo 615 Nov 21, 2022
Compose app with dummy data which serves as a playground to try out new things in the Android world.

Music Event Manager Compose app with dummy data which serves as a playground to try out new things in the Android world. Description The app primarily

Igor Tepavac 4 Apr 4, 2022
Android App to Teach the Card Counting Skill

card-counting Android App to Teach the Card Counting Skill. The skill can be used to make more informed decisions while playing games like Blackjack.

Jamie Flynn 1 Dec 30, 2021
Android App that communicates with a back-end server to display different One Piece characters

About This project is an Android App that communicates with a back-end server to display different One Piece characters. It's roughly based on this co

Sam Garcia 1 Feb 4, 2022
Simple card app for Udacity's Android Basics: User Interface course

just-because-card Simple card app for Udacity's Android Basics: User Interface c

null 0 Jan 6, 2022
Highligth specific points of interest of your app

ShowTipsView ShowTipsView let you highligth specific points of interest of your app. Usage ShowTipsView showtips = new ShowTipsBuilder(this) .setTarg

Frederico Silva 602 Dec 4, 2022