1
0
Fork 0
mirror of https://github.com/ethauvin/android-about-box.git synced 2025-04-25 02:37:11 -07:00

Compare commits

...

36 commits

Author SHA1 Message Date
mikemee
097f246870 Merge pull request #39 from eggheadgames/improve-share-message
Improve share message
2017-10-08 12:04:26 -07:00
Michael Mee
c3e6dca4c8 Increment build tools to the latest 25.x point release 2017-10-08 11:59:15 -07:00
Michael Mee
da75a1835c Bump version for immediate release 2017-10-08 11:52:21 -07:00
Michael Mee
b577541efa Prepend sharing message to the URL 2017-10-08 11:52:04 -07:00
mikemee
51d0b9fcbb Merge pull request #38 from eggheadgames/release-1-3-0
Release 1.3.0 with latest Material About Box
2017-10-08 11:08:02 -07:00
mikemee
5b6719dd13 Release 1.3.0 with latest Material About Box 2017-10-08 11:02:19 -07:00
mikemee
210c48d2ed Merge pull request #37 from ethauvin/develop
Move to Material About Library 2.2.1
2017-10-08 10:59:16 -07:00
fac8415ad9 Moved to version 2.2.1 of the material-about-library. 2017-09-01 23:28:00 -07:00
5df77387e6 Changed publisher URLs to https.
Workaround for invalid developer URL.
2017-09-01 23:25:03 -07:00
mikemee
5cf889dd42 Merge pull request #36 from eggheadgames/release-1.2.2
Release 1.2.2 with fix from #35
2017-09-01 11:07:44 -07:00
Michael Mee
77e3a67097 Release 1.2.2 with fix from #35 2017-09-01 11:02:35 -07:00
mikemee
4fe12914a9 Merge pull request #35 from ethauvin/develop
Handle both publisher or developer page.
2017-09-01 11:00:45 -07:00
Michael Mee
b5729bcfdf Merge branch 'develop'
* develop:
2017-09-01 10:52:33 -07:00
6fbb16f264 Handle both publisher or developer page. 2017-08-31 09:12:11 -07:00
mikemee
696fea95ee Merge pull request #32 from eggheadgames/release/1.2.1
Release 1.2.1
2017-08-30 16:06:35 -07:00
mikemee
c6fae1ad37 Merge pull request #33 from eggheadgames/release/1.2.1
Release/1.2.1 to master
2017-08-30 16:05:39 -07:00
Michael Mee
0fb1c6fb8d Correct downloads URL 2017-08-30 16:00:52 -07:00
Michael Mee
d6fe7c6975 Fix bracket imbalance for License badge 2017-08-30 15:59:26 -07:00
Michael Mee
e957ef5b56 Release 1.2.1 2017-08-30 15:57:45 -07:00
mikemee
0d52e41e48 Merge pull request #31 from ethauvin/develop
Author & Extra & About Company.
2017-08-30 15:36:35 -07:00
71c6c60762 Bring intent to font, to treat the activity as a single instance on background/resume. 2017-08-25 08:58:18 -07:00
546a95373a Added support for HTML in config.extra. 2017-08-22 11:13:23 -07:00
666ae83137 Added config.author, config.extra and config.extraTitle to general info card. 2017-08-22 10:56:18 -07:00
5f556fe8ce Do not display config.aboutLabelTitle if empty. 2017-08-22 10:55:31 -07:00
mikemee
85132d5e50 Merge pull request #29 from ethauvin/develop
Various Minor Fixes
2017-08-22 06:34:57 -07:00
337b7dafb3 Added default case to switch per PMD report. 2017-08-22 00:23:15 -07:00
3ae1c381d1 Made constants final per FindBugs report. 2017-08-22 00:09:03 -07:00
134ebebb61 Force CircleCI trigger. 2017-08-21 23:56:46 -07:00
0ebb478771 Added default shareMessage if not set. 2017-08-21 15:22:16 -07:00
852005c24e Fixed home page URL cleaning for display. 2017-08-21 14:52:44 -07:00
9d708b650f Switched to proper link to Publisher, per official documentation. 2017-08-21 14:22:22 -07:00
AlexDibrivnyy
83c54ea02f Merge pull request #28 from eggheadgames/release_1.2.0
Release 1.2.0 to master
2017-05-16 22:41:06 +03:00
mikemee
ff613f58d4 Merge pull request #22 from eggheadgames/release/1.1.0
Release 1.1.0 to master
2017-04-14 10:17:32 -07:00
mikemee
bd477b90dd Merge pull request #16 from eggheadgames/release/1.0.2
Release 1.0.2 to master
2017-02-15 22:28:47 -08:00
mikemee
440dd8decc Merge pull request #12 from eggheadgames/release/1.0.1
Release 1.0.1 to master
2017-02-09 16:18:24 -08:00
mikemee
5b4c5c63a2 Merge pull request #1 from eggheadgames/develop
Initial Release 🎉 

Woohoo, first version!
2017-02-06 10:02:28 -08:00
10 changed files with 97 additions and 41 deletions

View file

@ -1,5 +1,7 @@
[![Circle CI](https://circleci.com/gh/eggheadgames/android-about-box.svg?style=svg)](https://circleci.com/gh/eggheadgames/android-about-box)
[![Release](https://jitpack.io/v/eggheadgames/android-about-box.svg)](https://jitpack.io/#eggheadgames/android-about-box)
![Downloads](https://jitpack.io/v/eggheadgames/android-about-box/month.svg)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/eggheadgames/android-about-box/blob/develop/LICENSE)
# About Box
A modern About Box for an Android App built on the [daniel-stoneuk/material-about-library](https://github.com/daniel-stoneuk/material-about-library).
@ -12,7 +14,7 @@ Android About Box is configured with a set of (mostly) strings for the company n
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.
As of version 1.2.0, you can omit many features that don't apply (e.g. like website), by not setting the values.
You can omit most features if they don't apply (e.g. like website), by not setting the values.
## Installation Instructions
@ -43,6 +45,7 @@ Add AboutBox configuration to your Application class
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;
@ -85,7 +88,7 @@ Add AboutBox configuration to your Application class
aboutConfig.emailSubject = EMAIL_SUBJECT;
aboutConfig.emailBody = EMAIL_BODY;
```
## Open the About Box from your app
@ -103,6 +106,7 @@ By default, the default Android share intent will be called with the values spec
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`):
```java

View file

@ -1,7 +1,7 @@
dependencies:
pre:
- echo y | android update sdk --no-ui --all --filter tools,platform-tools,android-25
- echo y | android update sdk --no-ui --all --filter build-tools-25.0.2
- echo y | android update sdk --no-ui --all --filter build-tools-25.0.3
test:
override:

View file

@ -5,14 +5,14 @@ apply plugin: 'com.github.dcendents.android-maven'
group='com.github.eggheadgames'
android {
compileSdkVersion 24
buildToolsVersion "25.0.2"
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 15
targetSdkVersion 24
versionCode 4
versionName "1.2.0"
versionCode 7
versionName "1.3.1"
}
buildTypes {
release {
@ -28,5 +28,5 @@ android {
}
dependencies {
compile 'com.github.daniel-stoneuk:material-about-library:1.8.2'
compile 'com.github.daniel-stoneuk:material-about-library:2.2.1'
}

View file

@ -8,6 +8,9 @@ import android.widget.Toast;
public final class AboutBoxUtils {
public final static String playStoreAppURI = "https://play.google.com/store/apps/details?id=";
public final static String amznStoreAppURI = "https://www.amazon.com/gp/mas/dl/android?p=";
private AboutBoxUtils() {
//nothing
}
@ -49,11 +52,11 @@ public final class AboutBoxUtils {
switch (buildType) {
case GOOGLE:
appURI = "market://details?id=" + packageName;
webURI = "http://play.google.com/store/apps/details?id=" + packageName;
webURI = playStoreAppURI + packageName;
break;
case AMAZON:
appURI = "amzn://apps/android?p=" + packageName;
webURI = "http://www.amazon.com/gp/mas/dl/android?p=" + packageName;
webURI = amznStoreAppURI + packageName;
break;
default:
//nothing
@ -66,8 +69,17 @@ public final class AboutBoxUtils {
String webURI = null;
switch (buildType) {
case GOOGLE:
appURI = "market://search?q=pub:" + publisher;
webURI = "http://play.google.com/store/search?q=pub:" + publisher;
// see:
// https://developer.android.com/distribute/marketing-tools/linking-to-google-play.html#OpeningPublisher
// https://stackoverflow.com/questions/32029408/how-to-open-developer-page-on-google-play-store-market
// https://issuetracker.google.com/65244694
if (publisher.matches("\\d+")) {
webURI = "https://play.google.com/store/apps/dev?id=" + publisher;
appURI = webURI;
} else {
appURI = "market://search?q=pub:" + publisher;
webURI = "https://play.google.com/store/search?q=pub:" + publisher;
}
break;
case AMAZON:
appURI = "amzn://apps/android?showAll=1&p=" + packageName;

View file

@ -8,6 +8,9 @@ public class AboutConfig {
public String appName;
public int appIcon;
public String version;
public String author;
public String extra;
public String extraTitle;
public String aboutLabelTitle;
public String logUiEventName;
public String facebookUserName;

View file

@ -8,7 +8,7 @@ import android.text.TextUtils;
import com.danielstone.materialaboutlibrary.MaterialAboutActivity;
import com.danielstone.materialaboutlibrary.items.MaterialAboutActionItem;
import com.danielstone.materialaboutlibrary.items.MaterialAboutItemOnClickListener;
import com.danielstone.materialaboutlibrary.items.MaterialAboutItemOnClickAction;
import com.danielstone.materialaboutlibrary.items.MaterialAboutTitleItem;
import com.danielstone.materialaboutlibrary.model.MaterialAboutCard;
import com.danielstone.materialaboutlibrary.model.MaterialAboutList;
@ -23,6 +23,7 @@ public class AboutActivity extends MaterialAboutActivity {
public static void launch(Activity activity) {
Intent intent = new Intent(activity, AboutActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(intent);
}
@ -54,6 +55,21 @@ public class AboutActivity extends MaterialAboutActivity {
.text(R.string.egab_version)
.subText(config.version)
.build());
if (!TextUtils.isEmpty(config.author)) {
generalInfoCardBuilder.addItem(new MaterialAboutActionItem.Builder()
.text(R.string.egab_author)
.subText(config.author)
.build());
}
if (!TextUtils.isEmpty(config.extra) && !TextUtils.isEmpty(config.extraTitle)) {
generalInfoCardBuilder.addItem(new MaterialAboutActionItem.Builder()
.text(config.extraTitle)
.subTextHtml(config.extra)
.build());
}
return generalInfoCardBuilder.build();
}
@ -63,9 +79,9 @@ public class AboutActivity extends MaterialAboutActivity {
if (!TextUtils.isEmpty(config.guideHtmlPath)) {
card.addItem(itemHelper(R.string.egab_guide, R.drawable.ic_help_green,
new MaterialAboutItemOnClickListener() {
new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
if (config.dialog == null) {
AboutBoxUtils.openHTMLPage(AboutActivity.this, config.guideHtmlPath);
} else {
@ -77,9 +93,9 @@ public class AboutActivity extends MaterialAboutActivity {
);
}
card.addItem(itemHelper(R.string.egab_contact_support, R.drawable.ic_email_black,
new MaterialAboutItemOnClickListener() {
new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
EmailUtil.contactUs(AboutActivity.this);
logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_contact_log_event));
}
@ -93,18 +109,18 @@ public class AboutActivity extends MaterialAboutActivity {
MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
if (config.buildType != null && !TextUtils.isEmpty(config.packageName)) {
card.addItem(itemHelper(R.string.egab_leave_review, R.drawable.ic_review,
new MaterialAboutItemOnClickListener() {
new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
AboutBoxUtils.openApp(AboutActivity.this, config.buildType, config.packageName);
logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_review_log_event));
}
}));
}
card.addItem(itemHelper(R.string.egab_share, R.drawable.ic_share_black,
new MaterialAboutItemOnClickListener() {
new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
if (config.share == null) {
ShareUtil.share(AboutActivity.this);
} else {
@ -121,22 +137,22 @@ public class AboutActivity extends MaterialAboutActivity {
MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
if (config.buildType != null && !TextUtils.isEmpty(config.appPublisher) && !TextUtils.isEmpty(config.packageName)) {
card.addItem(itemHelper(R.string.egab_try_other_apps, R.drawable.ic_try_other_apps,
new MaterialAboutItemOnClickListener() {
new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
AboutBoxUtils.openPublisher(AboutActivity.this, config.buildType,
config.appPublisher, config.packageName);
logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_try_other_app_log_event));
}
}));
}
if (!TextUtils.isEmpty(config.companyHtmlPath)) {
if (!TextUtils.isEmpty(config.companyHtmlPath) && !TextUtils.isEmpty(config.aboutLabelTitle)) {
card.addItem(new MaterialAboutActionItem.Builder()
.text(config.aboutLabelTitle)
.icon(R.drawable.ic_about_black)
.setOnClickListener(new MaterialAboutItemOnClickListener() {
.setOnClickAction(new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
if (config.dialog == null) {
AboutBoxUtils.openHTMLPage(AboutActivity.this, config.companyHtmlPath);
} else {
@ -158,9 +174,9 @@ public class AboutActivity extends MaterialAboutActivity {
.text(R.string.egab_facebook_label)
.subText(config.facebookUserName)
.icon(R.drawable.ic_facebook_24)
.setOnClickListener(new MaterialAboutItemOnClickListener() {
.setOnClickAction(new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
AboutBoxUtils.getOpenFacebookIntent(AboutActivity.this, config.facebookUserName);
logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_facebook_log_event));
}
@ -172,9 +188,9 @@ public class AboutActivity extends MaterialAboutActivity {
.text(R.string.egab_twitter_label)
.subText(config.twitterUserName)
.icon(R.drawable.ic_twitter_24dp)
.setOnClickListener(new MaterialAboutItemOnClickListener() {
.setOnClickAction(new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
AboutBoxUtils.startTwitter(AboutActivity.this, config.twitterUserName);
logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_twitter_log_event));
}
@ -184,11 +200,11 @@ public class AboutActivity extends MaterialAboutActivity {
if (!TextUtils.isEmpty(config.webHomePage)) {
card.addItem(new MaterialAboutActionItem.Builder()
.text(R.string.egab_web_label)
.subText(config.webHomePage.replace("https://", "").replace("http://", "").replace("/", ""))
.subText(config.webHomePage.replaceFirst("^https?://", "").replaceAll("/$", ""))
.icon(R.drawable.ic_web_black_24dp)
.setOnClickListener(new MaterialAboutItemOnClickListener() {
.setOnClickAction(new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
AboutBoxUtils.openHTMLPage(AboutActivity.this, config.webHomePage);
logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_website_log_event));
}
@ -203,9 +219,9 @@ public class AboutActivity extends MaterialAboutActivity {
MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
if (!TextUtils.isEmpty(config.privacyHtmlPath)) {
card.addItem(itemHelper(R.string.egab_privacy_policy, R.drawable.ic_privacy,
new MaterialAboutItemOnClickListener() {
new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
if (config.dialog == null) {
AboutBoxUtils.openHTMLPage(AboutActivity.this, config.privacyHtmlPath);
} else {
@ -219,9 +235,9 @@ public class AboutActivity extends MaterialAboutActivity {
}
if (!TextUtils.isEmpty(config.acknowledgmentHtmlPath)) {
card.addItem(itemHelper(R.string.egab_acknowledgements, R.drawable.ic_acknowledgements,
new MaterialAboutItemOnClickListener() {
new MaterialAboutItemOnClickAction() {
@Override
public void onClick(boolean b) {
public void onClick() {
if (config.dialog == null) {
AboutBoxUtils.openHTMLPage(AboutActivity.this, config.acknowledgmentHtmlPath);
} else {
@ -235,11 +251,11 @@ public class AboutActivity extends MaterialAboutActivity {
return card.build();
}
private MaterialAboutActionItem itemHelper(int name, int icon, MaterialAboutItemOnClickListener listener) {
private MaterialAboutActionItem itemHelper(int name, int icon, MaterialAboutItemOnClickAction clickAction) {
return new MaterialAboutActionItem.Builder()
.text(name)
.icon(icon)
.setOnClickListener(listener)
.setOnClickAction(clickAction)
.build();
}

View file

@ -2,7 +2,9 @@ package com.eggheadgames.aboutbox.share;
import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
import com.eggheadgames.aboutbox.AboutBoxUtils;
import com.eggheadgames.aboutbox.AboutConfig;
public final class ShareUtil {
@ -17,7 +19,24 @@ public final class ShareUtil {
Intent intent2 = new Intent();
intent2.setAction(Intent.ACTION_SEND);
intent2.setType("text/plain");
intent2.putExtra(Intent.EXTRA_TEXT, config.shareMessage);
String shareMessage = config.shareMessage;
if (!TextUtils.isEmpty(config.packageName) && !TextUtils.isEmpty(shareMessage) && config.buildType != null) {
switch (config.buildType) {
case GOOGLE:
shareMessage = shareMessage + AboutBoxUtils.playStoreAppURI + config.packageName;
break;
case AMAZON:
shareMessage = shareMessage + AboutBoxUtils.amznStoreAppURI + config.packageName;
break;
default:
break;
}
}
intent2.putExtra(Intent.EXTRA_TEXT, shareMessage);
activity.startActivity(Intent.createChooser(intent2, config.sharingTitle));
}
}

View file

@ -3,6 +3,7 @@
<string name="egab_contact_support">Contactar o Suporte</string>
<string name="egab_try_other_apps">Experimentar outras aplicações</string>
<string name="egab_version">Versão</string>
<string name="egab_author">Autor</string>
<string name="egab_facebook_label">Facebook</string>
<string name="egab_twitter_label">Twitter</string>
<string name="egab_web_label">Web</string>

View file

@ -3,6 +3,7 @@
<string name="egab_contact_support">Contact Support</string>
<string name="egab_try_other_apps">Try Other Apps</string>
<string name="egab_version">Version</string>
<string name="egab_author">Author</string>
<string name="egab_facebook_label">Facebook</string>
<string name="egab_twitter_label">Twitter</string>
<string name="egab_web_label">Web</string>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme.MaterialAboutActivity" parent="Theme.Mal" >
<style name="AppTheme.MaterialAboutActivity" parent="Theme.Mal.Light.DarkActionBar" >
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>