Skip to content

Commit

Permalink
Added Firebase, notification support
Browse files Browse the repository at this point in the history
Targeting latest SDK with support for 4.4+, get latest version
notification in settings
  • Loading branch information
xRahul committed Jan 18, 2017
1 parent 46d87b1 commit 7eb3f11
Show file tree
Hide file tree
Showing 17 changed files with 208 additions and 89 deletions.
Binary file added app/APKs/app-release 1.3.apk
Binary file not shown.
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,14 @@ dependencies {
compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
compile "com.android.support:design:${rootProject.ext.supportLibVersion}"
compile "com.android.support:support-v4:${rootProject.ext.supportLibVersion}"
compile "com.android.support:preference-v7:${rootProject.ext.supportLibVersion}"
compile "com.android.support:support-vector-drawable:${rootProject.ext.supportLibVersion}"
compile "com.google.android.gms:play-services-analytics:${rootProject.ext.gmsFirebaseVersion}"
compile "com.google.firebase:firebase-messaging:${rootProject.ext.gmsFirebaseVersion}"
compile "com.google.firebase:firebase-core:${rootProject.ext.gmsFirebaseVersion}"
compile 'com.android.support:support-v4:25.1.0'
testCompile 'junit:junit:4.12'
}


apply plugin: 'com.google.gms.google-services'
16 changes: 7 additions & 9 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@

<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_stat_fm" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorPrimary" />

<activity
android:name=".MainActivity"
Expand All @@ -44,15 +50,7 @@
<activity
android:name=".FicSettingsActivity"
android:label="@string/title_fic_activity_settings" />
<service
android:name=".MyFirebaseMessagingService"
android:enabled="true"
android:exported="true"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>

<service
android:exported="true"
android:name=".MyFirebaseInstanceIDService"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package in.rahulja.ficsavemiddleware;


import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class DeveloperDialogFragment extends DialogFragment {


public DeveloperDialogFragment() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_developer_dialog, container, false);
}

public interface DeveloperDialogListener {
public void onDialogPositiveClick(DialogFragment dialog);

public void onDialogNegativeClick(DialogFragment dialog);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@

public class MainActivity extends AppCompatActivity {

private static final int PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1;
public static final String FILE_TYPES_PREFERENCE = "file_types_preference";
public static final String SEND_EMAIL_SITE_PREFERENCE = "send_email_site_preference";
public static final String EMAIL_ADDRESS_TO_SEND_TO = "email_address_to_send_to";
private static final int PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1;
private ProgressBar pbHorizontal;
private ProgressBar pbCircle;
private WebView mWebview;
Expand Down Expand Up @@ -323,11 +323,7 @@ public void runJSonPage(String url) {

// Execute Javascript on a new thread 2 second after page load
Log.d("ficsaveM/JSrun", "Start");
Toast.makeText(
getApplicationContext(),
R.string.script_run_start,
Toast.LENGTH_SHORT
).show();

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public void onTokenRefresh() {

/**
* Persist token to third-party servers.
*
* <p>
* Modify this method to associate the user's FCM InstanceID token with any server-side account
* maintained by your application.
*
Expand Down

This file was deleted.

127 changes: 119 additions & 8 deletions app/src/main/java/in/rahulja/ficsavemiddleware/SettingsFragment.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package in.rahulja.ficsavemiddleware;


import android.app.DialogFragment;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.preference.Preference;
Expand All @@ -16,39 +19,55 @@
import com.google.android.gms.analytics.Tracker;
import com.google.firebase.analytics.FirebaseAnalytics;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class SettingsFragment extends PreferenceFragment {

public class SettingsFragment extends PreferenceFragment
implements DeveloperDialogFragment.DeveloperDialogListener {

public static final String DOWNLOAD_FILE_PREFERENCE = "download_file_preference";
public static final String SEND_EMAIL_SITE_PREFERENCE = "send_email_site_preference";
public static final String OPEN_FILE_PREFERENCE = "open_file_preference";
public static final String SEND_EMAIL_DEVICE_PREFERENCE = "send_email_device_preference";
public static final String EMAIL_ADDRESS_TO_SEND_TO = "email_address_to_send_to";
public static final String PREF_VERSION = "version";
public static final String PREF_DEVELOPER = "developer";
private OnSharedPreferenceChangeListener listener;
private Preference emailAddressPref;
private SharedPreferences prefs;
private Tracker mGTracker;
private FirebaseAnalytics mFTracker;
private String versionSummary;
private Preference versionPref;
private String latestVersionUrl;
private Preference developerPref;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

FicsaveMiddlewareApplication application = (FicsaveMiddlewareApplication) getActivity().getApplication();
mGTracker = application.getDefaultGATracker();
mFTracker = application.getDefaultFATracker();

prefs = PreferenceManager.getDefaultSharedPreferences(this.getActivity());

addPreferencesFromResource(R.xml.preferences);
initPreferenceView();
checkLatestAppVersion();
updatePreferenceView();
}

initializePreferenceListener();

FicsaveMiddlewareApplication application = (FicsaveMiddlewareApplication) getActivity().getApplication();
mGTracker = application.getDefaultGATracker();
mFTracker = application.getDefaultFATracker();
private void initPreferenceView() {
emailAddressPref = findPreference(EMAIL_ADDRESS_TO_SEND_TO);
versionPref = findPreference(PREF_VERSION);
developerPref = findPreference(PREF_DEVELOPER);
}

private void updatePreferenceView() {

emailAddressPref = findPreference(EMAIL_ADDRESS_TO_SEND_TO);
String emailAddress = prefs.getString(EMAIL_ADDRESS_TO_SEND_TO, "");
CharSequence tempSummary;
if (emailAddress.isEmpty()) {
Expand All @@ -57,19 +76,101 @@ private void updatePreferenceView() {
tempSummary = emailAddress;
}

setPreferenceScreen(null);
getPreferenceScreen().removeAll();
addPreferencesFromResource(R.xml.preferences);

versionPref = findPreference(PREF_VERSION);
versionPref.setSummary(versionSummary);

Preference downloadFolderPref = findPreference(DOWNLOAD_FILE_PREFERENCE);
String defaultDownloadFolder = Environment.getExternalStorageDirectory()
+ "/" + Environment.DIRECTORY_DOCUMENTS;
downloadFolderPref.setSummary(defaultDownloadFolder);
emailAddressPref = findPreference(EMAIL_ADDRESS_TO_SEND_TO);
emailAddressPref.setSummary(tempSummary);
developerPref = findPreference(PREF_DEVELOPER);

initializePreferenceListener();
}

private void checkLatestAppVersion() {
versionSummary = BuildConfig.VERSION_NAME;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(getString(R.string.latest_release_url));
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));
String secondUrl = String.valueOf(secondURL);
String latest_version = Uri.parse(secondUrl).getLastPathSegment();
Log.d("ficsaveM/updateUrl", secondUrl);
String checkUrl = getString(R.string.current_release_url_prefix) + BuildConfig.VERSION_NAME;
if (secondUrl.equals(checkUrl)) {
versionSummary = BuildConfig.VERSION_NAME + " " +
getString(R.string.version_summary_latest);
} else {
versionSummary = BuildConfig.VERSION_NAME + " " +
"(" + getString(R.string.version_summary_changed_latest) + latest_version + ")";
latestVersionUrl = secondUrl;
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
versionPref.setSummary(versionSummary);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}

private void initializePreferenceListener() {
Log.d("ficsaveM/initPref", "Listener");

initializeSharedPreferenceListener();

initializePreferenceClickListener();
}

private void initializePreferenceClickListener() {
initializeVersionPreferenceClickListener();

initializeDeveloperPreferenceClickListener();
}

private void initializeDeveloperPreferenceClickListener() {
developerPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference developerPref) {
Log.d("ficsaveM/developerClick", developerPref.toString());
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.developer_url)));
startActivity(intent);
// DialogFragment dialog = new DeveloperDialogFragment();
// dialog.show((getActivity()).getFragmentManager(), "DeveloperDialogFragment");
return true;
}
});
}

private void initializeVersionPreferenceClickListener() {
versionPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference versionPref) {
if (versionPref.getSummary().toString()
.contains(getString(R.string.version_summary_changed_latest))) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(latestVersionUrl));
startActivity(intent);
}
Log.d("ficsaveM/versionClick", versionPref.toString());
return true;
}
});
}

private void initializeSharedPreferenceListener() {
listener = new OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences sPrefs, String key) {
switch (key) {
Expand Down Expand Up @@ -180,5 +281,15 @@ public void onPause() {
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(listener);
}

@Override
public void onDialogPositiveClick(DialogFragment dialog) {

}

@Override
public void onDialogNegativeClick(DialogFragment dialog) {

}
}

Binary file added app/src/main/res/drawable-hdpi/ic_stat_fm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable-mdpi/ic_stat_fm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable-xhdpi/ic_stat_fm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable-xxhdpi/ic_stat_fm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable-xxxhdpi/ic_stat_fm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions app/src/main/res/layout/fragment_developer_dialog.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.rahulja.ficsavemiddleware.DeveloperDialogFragment">

<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />

</FrameLayout>
9 changes: 9 additions & 0 deletions app/src/main/res/values-v21/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="latest_release_url">https://github.com/xRahul/FicsaveMiddleware/releases/latest</string>
<string name="current_release_url_prefix">https://github.com/xRahul/FicsaveMiddleware/releases/tag/</string>
<string name="version_summary_latest">" (latest)"</string>
<string name="version_summary_changed_latest">"Click to get latest version: "</string>
<string name="developer_name">Rahul Jain - http://rahulja.in</string>
<string name="developer_url">http://rahulja.in</string>
</resources>
Loading

0 comments on commit 7eb3f11

Please sign in to comment.