diff --git a/circle.yml b/circle.yml
index e6a8356..ed917c0 100644
--- a/circle.yml
+++ b/circle.yml
@@ -1,7 +1,7 @@
dependencies:
pre:
- - echo y | android update sdk --no-ui --all --filter tools,platform-tools,android-24
- - echo y | android update sdk --no-ui --all --filter build-tools-24.0.2
+ - 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
test:
override:
diff --git a/library/build.gradle b/library/build.gradle
index df52f18..0cc4ab4 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -6,7 +6,7 @@ group='com.github.eggheadgames'
android {
compileSdkVersion 24
- buildToolsVersion "24.0.2"
+ buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
@@ -29,7 +29,7 @@ android {
dependencies {
compile 'com.github.daniel-stoneuk:material-about-library:1.8.2'
- compile('io.branch.sdk.android:library:2.5.7') {
+ compile('io.branch.sdk.android:library:2.6.1') {
exclude module: 'answers.shim'
}
}
diff --git a/library/src/main/java/com/eggheadgames/aboutbox/AboutConfig.java b/library/src/main/java/com/eggheadgames/aboutbox/AboutConfig.java
index 490fc95..64bb21d 100644
--- a/library/src/main/java/com/eggheadgames/aboutbox/AboutConfig.java
+++ b/library/src/main/java/com/eggheadgames/aboutbox/AboutConfig.java
@@ -13,6 +13,7 @@ public class AboutConfig {
public String facebookUserName;
public String twitterUserName;
public String webHomePage;
+ public String guideHtmlPath;
public String appPublisher;
public String companyHtmlPath;
public String privacyHtmlPath;
diff --git a/library/src/main/java/com/eggheadgames/aboutbox/activity/AboutActivity.java b/library/src/main/java/com/eggheadgames/aboutbox/activity/AboutActivity.java
index 6bc3c9c..74ec6fc 100644
--- a/library/src/main/java/com/eggheadgames/aboutbox/activity/AboutActivity.java
+++ b/library/src/main/java/com/eggheadgames/aboutbox/activity/AboutActivity.java
@@ -5,6 +5,8 @@ import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.support.annotation.NonNull;
+import android.text.TextUtils;
import android.widget.Toast;
import com.danielstone.materialaboutlibrary.MaterialAboutActivity;
@@ -14,6 +16,7 @@ import com.danielstone.materialaboutlibrary.items.MaterialAboutTitleItem;
import com.danielstone.materialaboutlibrary.model.MaterialAboutCard;
import com.danielstone.materialaboutlibrary.model.MaterialAboutList;
import com.eggheadgames.aboutbox.AboutConfig;
+import com.eggheadgames.aboutbox.IAnalytic;
import com.eggheadgames.aboutbox.R;
import com.eggheadgames.aboutbox.share.EmailUtil;
import com.eggheadgames.aboutbox.share.ShareUtil;
@@ -30,6 +33,18 @@ public class AboutActivity extends MaterialAboutActivity {
final AboutConfig config = AboutConfig.getInstance();
+ return new MaterialAboutList.Builder()
+ .addCard(buildGeneralInfoCard(config))
+ .addCard(buildSupportCard(config))
+ .addCard(buildShareCard(config))
+ .addCard(buildAboutCard(config))
+ .addCard(buildSocialNetworksCard(config))
+ .addCard(buildPrivacyCard(config))
+ .build();
+ }
+
+ @NonNull
+ private MaterialAboutCard buildGeneralInfoCard(AboutConfig config) {
MaterialAboutCard.Builder generalInfoCardBuilder = new MaterialAboutCard.Builder();
generalInfoCardBuilder.addItem(new MaterialAboutTitleItem.Builder()
@@ -41,180 +56,184 @@ public class AboutActivity extends MaterialAboutActivity {
.text(R.string.egab_version)
.subText(config.version)
.build());
-
-
- MaterialAboutCard.Builder supportCardBuilder = new MaterialAboutCard.Builder();
- supportCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_contact_support)
- .icon(R.drawable.ic_email_black)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- EmailUtil.contactUs(AboutActivity.this);
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_contact_log_event));
- }
- }
- }).build());
-
-
- MaterialAboutCard.Builder shareCardBuilder = new MaterialAboutCard.Builder();
- shareCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_leave_review)
- .icon(R.drawable.ic_review)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- openApp(config.buildType, config.packageName);
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_review_log_event));
- }
- }
- })
- .build());
- shareCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_share)
- .icon(R.drawable.ic_share_black)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- ShareUtil.share(AboutActivity.this);
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_share_log_event));
- }
- }
- })
- .build());
-
-
- MaterialAboutCard.Builder aboutCardBuilder = new MaterialAboutCard.Builder();
- aboutCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_try_other_apps)
- .icon(R.drawable.ic_try_other_apps)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- openPublisher(config.buildType, config.appPublisher, config.packageName);
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_try_other_app_log_event));
- }
- }
- })
- .build());
- aboutCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(config.aboutLabelTitle)
- .icon(R.drawable.ic_about_black)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- if (config.dialog == null) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(config.companyHtmlPath)));
- } else {
- config.dialog.open(AboutActivity.this, config.companyHtmlPath, config.aboutLabelTitle);
- }
-
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, config.aboutLabelTitle);
- }
- }
- })
- .build());
-
-
- MaterialAboutCard.Builder socialNetworksCardBuilder = new MaterialAboutCard.Builder();
- socialNetworksCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_facebook_label)
- .subText(config.facebookUserName)
- .icon(R.drawable.ic_facebook_24)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- getOpenFacebookIntent(AboutActivity.this, config.facebookUserName);
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_facebook_log_event));
- }
- }
- })
- .build());
- socialNetworksCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_twitter_label)
- .subText(config.twitterUserName)
- .icon(R.drawable.ic_twitter_24dp)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- startTwitter(AboutActivity.this, config.twitterUserName);
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_twitter_log_event));
- }
- }
- })
- .build());
-
- socialNetworksCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_web_label)
- .subText(config.webHomePage.replace("https://", "").replace("http://", "").replace("/", ""))
- .icon(R.drawable.ic_web_black_24dp)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(config.webHomePage)));
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_website_log_event));
- }
- }
- })
- .build());
-
- MaterialAboutCard.Builder privacyCardBuilder = new MaterialAboutCard.Builder();
- privacyCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_privacy_policy)
- .icon(R.drawable.ic_privacy)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- if (config.dialog == null) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(config.privacyHtmlPath)));
- } else {
- config.dialog.open(AboutActivity.this, config.privacyHtmlPath, getString(R.string.egab_privacy_policy));
- }
-
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_privacy_log_event));
- }
- }
- })
- .build());
- privacyCardBuilder.addItem(new MaterialAboutActionItem.Builder()
- .text(R.string.egab_acknowledgements)
- .icon(R.drawable.ic_acknowledgements)
- .setOnClickListener(new MaterialAboutItemOnClickListener() {
- @Override
- public void onClick(boolean b) {
- if (config.dialog == null) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(config.acknowledgmentHtmlPath)));
- } else {
- config.dialog.open(AboutActivity.this, config.acknowledgmentHtmlPath, getString(R.string.egab_acknowledgements));
- }
-
- if (config.analytics != null) {
- config.analytics.logUiEvent(config.logUiEventName, getString(R.string.egab_acknowledgements_log_event));
- }
- }
- })
- .build());
-
-
- return new MaterialAboutList.Builder()
- .addCard(generalInfoCardBuilder.build())
- .addCard(supportCardBuilder.build())
- .addCard(shareCardBuilder.build())
- .addCard(aboutCardBuilder.build())
- .addCard(socialNetworksCardBuilder.build())
- .addCard(privacyCardBuilder.build())
- .build();
+ return generalInfoCardBuilder.build();
}
+ @NonNull
+ private MaterialAboutCard buildSupportCard(final AboutConfig config) {
+ MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
+
+ if (!TextUtils.isEmpty(config.guideHtmlPath)) {
+ card.addItem(itemHelper(R.string.egab_guide, R.drawable.ic_help_green,
+ new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ if (config.dialog == null) {
+ openHTMLPage(config.guideHtmlPath);
+ } else {
+ config.dialog.open(AboutActivity.this, config.guideHtmlPath, getString(R.string.egab_guide));
+ }
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_guide));
+ }
+ })
+ );
+ }
+ card.addItem(itemHelper(R.string.egab_contact_support, R.drawable.ic_email_black,
+ new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ EmailUtil.contactUs(AboutActivity.this);
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_contact_log_event));
+ }
+ }));
+
+ return card.build();
+ }
+
+ @NonNull
+ private MaterialAboutCard buildShareCard(final AboutConfig config) {
+ MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
+
+ card.addItem(itemHelper(R.string.egab_leave_review, R.drawable.ic_review,
+ new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ openApp(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() {
+ @Override
+ public void onClick(boolean b) {
+ ShareUtil.share(AboutActivity.this);
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_share_log_event));
+ }
+ }));
+
+ return card.build();
+ }
+
+ @NonNull
+ private MaterialAboutCard buildAboutCard(final AboutConfig config) {
+ MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
+
+ card.addItem(itemHelper(R.string.egab_try_other_apps, R.drawable.ic_try_other_apps,
+ new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ openPublisher(config.buildType, config.appPublisher, config.packageName);
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_try_other_app_log_event));
+ }
+ }));
+ card.addItem(new MaterialAboutActionItem.Builder()
+ .text(config.aboutLabelTitle)
+ .icon(R.drawable.ic_about_black)
+ .setOnClickListener(new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ if (config.dialog == null) {
+ openHTMLPage(config.companyHtmlPath);
+ } else {
+ config.dialog.open(AboutActivity.this, config.companyHtmlPath, config.aboutLabelTitle);
+ }
+ logUIEventName(config.analytics, config.logUiEventName, config.aboutLabelTitle);
+ }
+ })
+ .build());
+
+ return card.build();
+ }
+
+ @NonNull
+ private MaterialAboutCard buildSocialNetworksCard(final AboutConfig config) {
+ MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
+
+ card.addItem(new MaterialAboutActionItem.Builder()
+ .text(R.string.egab_facebook_label)
+ .subText(config.facebookUserName)
+ .icon(R.drawable.ic_facebook_24)
+ .setOnClickListener(new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ getOpenFacebookIntent(AboutActivity.this, config.facebookUserName);
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_facebook_log_event));
+ }
+ })
+ .build());
+ card.addItem(new MaterialAboutActionItem.Builder()
+ .text(R.string.egab_twitter_label)
+ .subText(config.twitterUserName)
+ .icon(R.drawable.ic_twitter_24dp)
+ .setOnClickListener(new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ startTwitter(AboutActivity.this, config.twitterUserName);
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_twitter_log_event));
+ }
+ })
+ .build());
+
+ card.addItem(new MaterialAboutActionItem.Builder()
+ .text(R.string.egab_web_label)
+ .subText(config.webHomePage.replace("https://", "").replace("http://", "").replace("/", ""))
+ .icon(R.drawable.ic_web_black_24dp)
+ .setOnClickListener(new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ openHTMLPage(config.webHomePage);
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_website_log_event));
+ }
+ })
+ .build());
+
+ return card.build();
+ }
+
+ @NonNull
+ private MaterialAboutCard buildPrivacyCard(final AboutConfig config) {
+ MaterialAboutCard.Builder card = new MaterialAboutCard.Builder();
+
+ card.addItem(itemHelper(R.string.egab_privacy_policy, R.drawable.ic_privacy,
+ new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ if (config.dialog == null) {
+ openHTMLPage(config.privacyHtmlPath);
+ } else {
+ config.dialog.open(AboutActivity.this, config.privacyHtmlPath, getString(R.string.egab_privacy_policy));
+ }
+
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_privacy_log_event));
+ }
+ })
+ );
+ card.addItem(itemHelper(R.string.egab_acknowledgements, R.drawable.ic_acknowledgements,
+ new MaterialAboutItemOnClickListener() {
+ @Override
+ public void onClick(boolean b) {
+ if (config.dialog == null) {
+ openHTMLPage(config.acknowledgmentHtmlPath);
+ } else {
+ config.dialog.open(AboutActivity.this, config.acknowledgmentHtmlPath, getString(R.string.egab_acknowledgements));
+ }
+ logUIEventName(config.analytics, config.logUiEventName, getString(R.string.egab_acknowledgements_log_event));
+ }
+ })
+ );
+ return card.build();
+ }
+
+ private MaterialAboutActionItem itemHelper(int name, int icon, MaterialAboutItemOnClickListener listener) {
+ return new MaterialAboutActionItem.Builder()
+ .text(name)
+ .icon(icon)
+ .setOnClickListener(listener)
+ .build();
+ }
+
+
@Override
protected CharSequence getActivityTitle() {
return getString(R.string.egab_about_screen_title);
@@ -249,7 +268,6 @@ public class AboutActivity extends MaterialAboutActivity {
Toast.makeText(context, R.string.egab_can_not_open, Toast.LENGTH_SHORT).show();
}
}
-
}
public void openApp(AboutConfig.BuildType buildType, String packageName) {
@@ -267,7 +285,7 @@ public class AboutActivity extends MaterialAboutActivity {
default:
//nothing
}
- open(appURI, webURI);
+ openApplication(appURI, webURI);
}
public void openPublisher(AboutConfig.BuildType buildType, String publisher, String packageName) {
@@ -285,18 +303,28 @@ public class AboutActivity extends MaterialAboutActivity {
default:
//nothing
}
- open(appURI, webURI);
+ openApplication(appURI, webURI);
}
- private void open(String appURI, String webURI) {
+ private void openApplication(String appURI, String webURI) {
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(appURI)));
} catch (ActivityNotFoundException e1) {
try {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(webURI)));
+ openHTMLPage(webURI);
} catch (ActivityNotFoundException e2) {
Toast.makeText(this, R.string.egab_can_not_open, Toast.LENGTH_SHORT).show();
}
}
}
+
+ private void openHTMLPage(String htmlPath) {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(htmlPath)));
+ }
+
+ private void logUIEventName(IAnalytic analytics, String eventType, String eventValue) {
+ if (analytics != null) {
+ analytics.logUiEvent(eventType, eventValue);
+ }
+ }
}
diff --git a/library/src/main/res/drawable/ic_help_green.xml b/library/src/main/res/drawable/ic_help_green.xml
new file mode 100644
index 0000000..e1e7ce0
--- /dev/null
+++ b/library/src/main/res/drawable/ic_help_green.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/library/src/main/res/values-pt/strings.xml b/library/src/main/res/values-pt/strings.xml
index 9f31aeb..0e6a643 100644
--- a/library/src/main/res/values-pt/strings.xml
+++ b/library/src/main/res/values-pt/strings.xml
@@ -21,4 +21,5 @@
Acknowledgements
Tu não tens nenhuma aplicação que possa abrir esta ligação
Digite sua pergunta aqui:
+ Guia
diff --git a/library/src/main/res/values/strings.xml b/library/src/main/res/values/strings.xml
index cdf08c3..b979e55 100644
--- a/library/src/main/res/values/strings.xml
+++ b/library/src/main/res/values/strings.xml
@@ -21,5 +21,6 @@
Acknowledgements
You don\'t have any app that can open this link
Please type your question here:
+ Guide