Skip to content

Instantly share code, notes, and snippets.

View abir-hasan's full-sized avatar
🏠
Concentrating

Abir Hasan abir-hasan

🏠
Concentrating
View GitHub Profile
@abir-hasan
abir-hasan / NotificationActivity.java
Last active May 15, 2019 18:00
Creating a basic notification in Android O. With TaskStackBuilder
private void createNotificationInOreo() {
String NOTIFICATION_CHANNEL_ID = "default";
int id = (int) System.currentTimeMillis();
Intent parentIntent = new Intent(this, ParentActivity.class);
Intent resultIntent = new Intent(this, SecondActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack
stackBuilder.addParentStack(ParentActivity.class);
@abir-hasan
abir-hasan / BaseApp.java
Last active January 25, 2019 18:05
UUID as a unique device id
private static String uniqueID = null;
private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(
PREF_UNIQUE_ID, Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
uniqueID = UUID.randomUUID().toString();
@abir-hasan
abir-hasan / DateTimeUtils.kt
Last active April 8, 2019 04:43
parsing different date-time form string input
fun parseTime(value: String): String {
val dateTime = "2018-11-27 17:48:38.300"
val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.getDefault())
try {
val calendar = Calendar.getInstance()
calendar.time = format.parse(value)
var hour = calendar.get(Calendar.HOUR_OF_DAY)
val minute = calendar.get(Calendar.MINUTE)
val timeString: String
@abir-hasan
abir-hasan / DatePickerDialogUtils.kt
Created March 31, 2019 09:23
show a DatePickerDialog from fragment
private fun showDatePickerDialog() {
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
getContext()?.let { it ->
// Create a new instance of DatePickerDialog and return it
val dpd = DatePickerDialog(
it,
@abir-hasan
abir-hasan / RunTimePermissionMethodsActivity.kt
Created April 4, 2019 12:31
Proper way to show run-time permission in an activity with camera permission example
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.xyz)
checkCameraPermission()
}
private fun checkCameraPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
@abir-hasan
abir-hasan / MainActivity.kt
Created January 7, 2020 07:19
Translucent Statusbar and whole UI over the navigation buttons
private fun translucentStatusBarWithFixedNavigationButtons() {
window.apply {
clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
statusBarColor = Color.TRANSPARENT
}
}
@abir-hasan
abir-hasan / LogExtentions.kt
Created March 18, 2020 16:42
Log Extension methods for all log levels. Only for Debug mode. So One can call a log method on any string.
const val APP_TAG = "Test App"
fun String.logVerbose(tag: String = APP_TAG) {
if (BuildConfig.DEBUG)
Log.v(tag, this)
}
fun String.logDebug(tag: String = APP_TAG) {
if (BuildConfig.DEBUG)
Log.d(tag, this)
@abir-hasan
abir-hasan / CreateKeyHashFromSHA.kt
Last active September 20, 2020 11:58
Creating Key Hash From SHA fingerprint
private fun generateKeyHashFromSHA() {
try {
val info = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.getEncoder().encode(md.digest()))
"key: $hashKey".logDebug(TAG)
Log.d(TAG, "generateSha1: $hashKey")
}
@abir-hasan
abir-hasan / DeviceSpecifications.kt
Created December 23, 2021 05:42
Find Device Network Specifications and Manufacturer
fun MainActivity.findDeviceModelManufacturerAndOS() {
val status = StringBuilder()
.append("\nOS Version: ${Build.VERSION.SDK_INT}")
.append("\nMANUFACTURER: ${Build.MANUFACTURER}")
.append("\nMODEL: ${Build.MODEL}")
"findDeviceModelManufacturerAndOS() $status".logWarn(TAG)
}
/**
@abir-hasan
abir-hasan / APIResponse.kt
Created March 12, 2022 12:37
Generic API Response Model for UI Class
enum class Status {
SUCCESS,
ERROR,
LOADING
}
data class APIResponse<out T>(val status: Status, val data: T?, val message: String?) {
companion object {
fun <T> success(data: T): APIResponse<T> = APIResponse(