Java tutorial
// Copyright 2015 The Vanadium Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package io.v.android.apps.reader; import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.os.Environment; import android.os.Handler; import android.os.Looper; import android.support.v4.content.ContextCompat; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.concurrent.Executor; /** * Utility class which contains useful static methods. */ public class Utils { /** * Checks if the app has read and write permission to the external storage. */ public static boolean hasExternalStoragePermission(Context context) { boolean hasWritePermission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; boolean hasReadPermission = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; return hasWritePermission && hasReadPermission; } /** * Returns an app-independent files directory for saving log files, to avoid accidentally * deleting log files by clearing the app data. */ public static File getLogDirectory() { File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS); if (!dir.exists()) { dir.mkdirs(); } return dir; } /** * Returns the current time as string formatted as "yyyyMMdd-HHmmss.SSS", * which can be used in log filenames. */ public static String getTimeString() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd-HHmmss.SSS", Locale.getDefault()); return formatter.format(new Date()); } /** * Returns an {@link Executor} which runs the provided task in the main thread. */ public static MainThreadExecutor mainThreadExecutor() { return new MainThreadExecutor(); } private static class MainThreadExecutor implements Executor { private final Handler mHandler = new Handler(Looper.getMainLooper()); @Override public void execute(Runnable command) { mHandler.post(command); } } }