Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01cb5dd9 authored by ezio84's avatar ezio84 Committed by Michael Bestas
Browse files

Screenshot: append app name to filename

Kang Samsung's idea.

Change-Id: Ibc6a52b5e2597e6014a2da6a4211febe17ec02c7
parent d329f637
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -81,6 +83,7 @@ import java.io.OutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * POD used in the AsyncTask which saves an image in the background.
@@ -113,6 +116,7 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> {

    private static final String SCREENSHOTS_DIR_NAME = "Screenshots";
    private static final String SCREENSHOT_FILE_NAME_TEMPLATE = "Screenshot_%s.png";
    private static final String SCREENSHOT_FILE_NAME_TEMPLATE_APPNAME = "Screenshot_%s_%s.png";
    private static final String SCREENSHOT_SHARE_SUBJECT_TEMPLATE = "Screenshot (%s)";

    private final SaveImageInBackgroundData mParams;
@@ -133,6 +137,23 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> {
    // necessary.
    private static boolean mTickerAddSpace;

    private static CharSequence getRunningActivityName(Context context) {
        final ActivityManager am =
                (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        final PackageManager pm = context.getPackageManager();

        List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (tasks != null && !tasks.isEmpty()) {
            ActivityManager.RunningTaskInfo top = tasks.get(0);
            try {
                ActivityInfo info = pm.getActivityInfo(top.topActivity, 0);
                return pm.getApplicationLabel(info.applicationInfo);
            } catch (PackageManager.NameNotFoundException e) {
            }
        }
        return null;
    }

    SaveImageInBackgroundTask(Context context, SaveImageInBackgroundData data,
            NotificationManager nManager) {
        Resources r = context.getResources();
@@ -141,7 +162,15 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> {
        mParams = data;
        mImageTime = System.currentTimeMillis();
        String imageDate = new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date(mImageTime));
        CharSequence appName = getRunningActivityName(context);
        if (appName != null) {
            // Replace all spaces and special chars with an underscore
            String appNameString = appName.toString().replaceAll("[\\\\/:*?\"<>|\\s]+", "_");
            mImageFileName = String.format(SCREENSHOT_FILE_NAME_TEMPLATE_APPNAME,
                    appNameString, imageDate);
        } else {
            mImageFileName = String.format(SCREENSHOT_FILE_NAME_TEMPLATE, imageDate);
        }

        mScreenshotDir = new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES), SCREENSHOTS_DIR_NAME);