Skip to content

Instantly share code, notes, and snippets.

View piyush-malaviya's full-sized avatar

Piyush Malaviya piyush-malaviya

  • Ahmedabad, Gujarat, India
View GitHub Profile
@piyush-malaviya
piyush-malaviya / JsonUtils.java
Created April 13, 2017 11:36
JsonUtils, JSON parsing made easy. Simply pass the json object and the path to the key you want, and it will return value if available, otherwise it will return null. Works well with simple JSONObject and Gson's JsonObject.
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;
import java.util.Map;
public class JsonUtils {
@piyush-malaviya
piyush-malaviya / PrintFormattedJson.java
Last active May 11, 2017 05:38
Print formated json in log screen. it is useful we want to show json data in formatted style in log screen.
import android.util.Log;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import java.util.Map;
public class PrintFormattedJson {
@piyush-malaviya
piyush-malaviya / FusedLocationHelper.java
Last active November 30, 2022 11:46
FusedLocationHelper class is used for requesting location for continuous location update or get only single time location update.
public class FusedLocationHelper implements GoogleApiClient.OnConnectionFailedListener, ResultCallback<Status> {
private static final String TAG = FusedLocationHelper.class.getSimpleName();
private Context context;
private GoogleApiClient googleApiClient;
private Location lastKnownLocation;
private LocationUpdateListener locationUpdateListener;
// location request parameter
private long interval = 0; // time in millisecond
private long fastestInterval = 0; // time in millisecond
import java.util.Calendar;
public class DateTimeUtils {
private static final long SEC = 1000;
private static final long MIN = SEC * 60;
private static final long HOUR = MIN * 60;
private static final long DAY = HOUR * 24;
private static final long WEEK = DAY * 7;
private static final long YESTERDAY = DAY * 2;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Converter;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import android.util.Log;
import java.nio.charset.Charset;
@piyush-malaviya
piyush-malaviya / PermissionHelper.java
Last active December 26, 2023 02:56
Permission Helper class for handling permission flow
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
public class SpannableUtils {
public static void makeStringClickable(final TextView textView, String clickableText, final OnClickSpannableListener onClickSpannableListener) {
makeStringClickable(textView, clickableText, ContextCompat.getColor(textView.getContext(), R.color.colorPrimary), onClickSpannableListener);
}
public static void makeStringClickable(final TextView textView, String clickableText, final int color, final OnClickSpannableListener onClickSpannableListener) {
String text = textView.getText().toString();
if (!text.contains(clickableText)) {
@piyush-malaviya
piyush-malaviya / BaseFilterAdapter.java
Last active September 1, 2022 07:43
Filterable RecyclerView adapter
import android.os.Handler;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.widget.Filter;
import android.widget.Filterable;
import java.util.ArrayList;
public abstract class BaseFilterAdapter<T, S extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<S> implements Filterable {
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
public class LocalStorageProvider extends DocumentsProvider {
public static final String AUTHORITY = "com.app.android.localstorage.documents";
/**
* Default root projection: everything but Root.COLUMN_MIME_TYPES
*/
private final static String[] DEFAULT_ROOT_PROJECTION = new String[]{
DocumentsContract.Root.COLUMN_ROOT_ID,
DocumentsContract.Root.COLUMN_FLAGS,