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

Commit ed3ac463 authored by Steve Kondik's avatar Steve Kondik
Browse files

Merge branch 'jb-mr1-release' of...

Merge branch 'jb-mr1-release' of https://android.googlesource.com/platform/packages/apps/Gallery2 into HEAD

Change-Id: Ibe51e0ac8eaf3a2543209be60f7986f35e041034
parents 53d53cfe ccddd6f9
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -50,23 +50,33 @@ LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += com.android.gallery3d.common2
LOCAL_STATIC_JAVA_LIBRARIES += xmp_toolkit
LOCAL_STATIC_JAVA_LIBRARIES += mp4parser

LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
LOCAL_SRC_FILES += $(call all-java-files-under, src_pd)
LOCAL_SRC_FILES += $(call all-java-files-under, ../Camera/src)

LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res packages/apps/Camera/res
LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.android.camera
LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res 
LOCAL_RESOURCE_DIR += packages/apps/Camera/res

LOCAL_AAPT_FLAGS := --auto-add-overlay \
    --extra-packages com.android.camera

LOCAL_PACKAGE_NAME := Gallery2

LOCAL_OVERRIDES_PACKAGES := Gallery Gallery3D GalleryNew3D

#LOCAL_SDK_VERSION := current

LOCAL_JNI_SHARED_LIBRARIES := libjni_mosaic libjni_eglfence
LOCAL_SDK_VERSION := current

LOCAL_REQUIRED_MODULES := libjni_mosaic libjni_eglfence
# If this is an unbundled build (to install seprately) then include
# the libraries in the APK, otherwise just put them in /system/lib and
# leave them out of the APK
ifneq (,$(TARGET_BUILD_APPS))
  LOCAL_JNI_SHARED_LIBRARIES := libjni_mosaic libjni_eglfence libjni_filtershow_filters
else
  LOCAL_REQUIRED_MODULES := libjni_mosaic libjni_eglfence libjni_filtershow_filters
endif

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

+98 −43
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>

<manifest android:versionCode="40000"
        android:versionName="1.1.40000"
<manifest android:versionCode="40001"
        android:versionName="1.1.40001"
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.gallery3d">

    <original-package android:name="com.android.gallery3d" />

    <uses-sdk android:minSdkVersion="14" />
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="16" />

    <permission android:name="com.android.gallery3d.permission.GALLERY_PROVIDER"
            android:protectionLevel="signatureOrSystem" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
@@ -38,7 +41,8 @@
            android:name="com.android.gallery3d.app.GalleryAppImpl"
            android:theme="@style/Theme.Gallery"
            android:logo="@mipmap/ic_launcher_gallery"
            android:hardwareAccelerated="true">
            android:hardwareAccelerated="true"
            android:largeHeap="true">
        <uses-library android:name="com.google.android.media.effects" android:required="false" />
        <activity android:name="com.android.gallery3d.app.MovieActivity"
                android:label="@string/movie_view_label"
@@ -122,6 +126,7 @@
                <data android:mimeType="image/png" />
                <data android:mimeType="image/x-ms-bmp" />
                <data android:mimeType="image/vnd.wap.wbmp" />
                <data android:mimeType="application/vnd.google.panorama360+jpg" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.android.camera.action.REVIEW" />
@@ -208,39 +213,63 @@
                <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
            </intent-filter>
        </activity>
        <activity android:name="com.android.gallery3d.photoeditor.PhotoEditor"
                android:label="@string/app_name"
                android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:hardwareAccelerated="true"
                android:process=":edit">
        <activity android:name="com.android.gallery3d.app.TrimVideo"
                android:label="@string/trim_label">
        </activity>

        <permission android:name="com.android.gallery3d.filtershow.permission.READ"
                    android:protectionLevel="signature" />

        <permission android:name="com.android.gallery3d.filtershow.permission.WRITE"
                    android:protectionLevel="signature" />

        <provider
            android:name="com.android.gallery3d.filtershow.provider.SharedImageProvider"
            android:authorities="com.android.gallery3d.filtershow.provider.SharedImageProvider"
            android:grantUriPermissions="true"
            android:readPermission="com.android.gallery3d.filtershow.permission.READ"
            android:writePermission="com.android.gallery3d.filtershow.permission.WRITE" />
        <activity
            android:name="com.android.gallery3d.filtershow.FilterShowActivity"
            android:label="@string/title_activity_filter_show"
            android:theme="@style/Theme.Gallery"
            android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.EDIT" />
                <data android:mimeType="image/*" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>
        </activity>
        <uses-library android:name="com.google.android.media.effects"
                android:required="false" />

        <activity android:name="com.android.gallery3d.app.SlideshowDream"
                android:label="@string/slideshow_dream_name"
                android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                android:hardwareAccelerated="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="action_nextgen_edit" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>
            <intent-filter android:label="@string/crop_label">
                <action android:name="com.android.camera.action.EDITOR_CROP" />
                <data android:scheme="http" />
                <data android:scheme="https" />
                <data android:scheme="content" />
                <data android:scheme="file" />
                <data android:scheme="" />
                <data android:mimeType="image/*" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.DREAM" />
                <category android:name="android.intent.category.ALTERNATIVE" />
                <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
            </intent-filter>
        </activity>

        <uses-library android:name="com.google.android.media.effects"
                android:required="false" />

        <activity android:name="com.android.gallery3d.settings.GallerySettings"
                android:theme="@android:style/Theme.Holo"
                android:theme="@style/Theme.Gallery"
                android:configChanges="orientation|keyboardHidden|screenSize" />

        <provider android:name="com.android.gallery3d.provider.GalleryProvider"
                android:syncable="false"
                android:grantUriPermissions="true"
                android:exported="true"
                android:permission="com.android.gallery3d.permission.GALLERY_PROVIDER"
                android:authorities="com.android.gallery3d.provider" />
        <activity android:name="com.android.gallery3d.gadget.WidgetClickHandler" />
        <activity android:name="com.android.gallery3d.app.DialogPicker"
@@ -251,12 +280,12 @@
                android:theme="@style/DialogPickerTheme"/>
        <activity android:name="com.android.gallery3d.gadget.WidgetTypeChooser"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:theme="@android:style/Theme.Holo.Dialog"/>
                android:theme="@style/Theme.Gallery.Dialog"/>

        <activity android:name="com.android.camera.Camera"
                android:taskAffinity="com.android.camera"
        <activity android:name="com.android.camera.CameraActivity"
                android:taskAffinity="com.android.camera.CameraActivity"
                android:label="@string/camera_label"
                android:theme="@style/ThemeCamera"
                android:theme="@style/Theme.Camera"
                android:icon="@mipmap/ic_launcher_camera"
                android:configChanges="orientation|screenSize|keyboardHidden"
                android:clearTaskOnLaunch="true"
@@ -269,12 +298,35 @@
                <action android:name="android.media.action.STILL_IMAGE_CAMERA" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="com.android.keyguard.layout"
                    android:resource="@layout/keyguard_widget" />
        </activity>

        <activity android:name="com.android.camera.SecureCameraActivity"
                android:taskAffinity="com.android.camera.SecureCameraActivity"
                android:excludeFromRecents="true"
                android:label="@string/camera_label"
                android:theme="@style/Theme.CameraSecure"
                android:icon="@mipmap/ic_launcher_camera"
                android:configChanges="orientation|screenSize|keyboardHidden"
                android:clearTaskOnLaunch="true"
                android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
            <intent-filter>
                <action android:name="android.media.action.STILL_IMAGE_CAMERA_SECURE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.media.action.IMAGE_CAPTURE_SECURE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="com.android.keyguard.layout"
                    android:resource="@layout/keyguard_widget" />
        </activity>

        <activity-alias android:icon="@mipmap/ic_launcher_camera"
                        android:label="@string/camera_label"
                        android:name="com.android.camera.CameraLauncher"
                        android:targetActivity="com.android.camera.Camera" >
                        android:targetActivity="com.android.camera.CameraActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
@@ -282,14 +334,20 @@
            </intent-filter>
        </activity-alias>

        <activity android:name="com.android.camera.VideoCamera"
                android:taskAffinity="com.android.camera"
        <activity-alias android:icon="@mipmap/ic_launcher_camera"
                        android:label="@string/camera_label"
                        android:name="com.android.camera.Camera"
                        android:targetActivity="com.android.camera.CameraActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>

        <activity-alias android:icon="@mipmap/ic_launcher_video_camera"
                android:label="@string/video_camera_label"
                android:theme="@style/ThemeCamera"
                android:configChanges="orientation|screenSize|keyboardHidden"
                android:icon="@mipmap/ic_launcher_video_camera"
                android:clearTaskOnLaunch="true"
                android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
                android:name="com.android.camera.VideoCamera"
                android:targetActivity="com.android.camera.CameraActivity" >
            <intent-filter>
                <action android:name="android.media.action.VIDEO_CAMERA" />
                <category android:name="android.intent.category.DEFAULT" />
@@ -298,15 +356,8 @@
                <action android:name="android.media.action.VIDEO_CAPTURE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name="com.android.camera.PanoramaActivity"
                android:taskAffinity="com.android.camera"
                android:label="@string/pano_dialog_title"
                android:theme="@style/ThemeCamera"
                android:configChanges="orientation|screenSize|keyboardHidden"
                android:clearTaskOnLaunch="true"
                android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
        </activity>
        </activity-alias>

        <receiver android:name="com.android.gallery3d.gadget.PhotoAppWidgetProvider"
                android:label="@string/appwidget_title">
            <intent-filter>
@@ -323,6 +374,7 @@
                <data android:scheme="package"/>
            </intent-filter>
        </receiver>
        <service android:name="com.android.gallery3d.app.PackagesMonitor$AsyncService"/>
        <receiver android:name="com.android.camera.CameraButtonIntentReceiver">
            <intent-filter>
                <action android:name="android.intent.action.CAMERA_BUTTON"/>
@@ -342,5 +394,8 @@
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
            </intent-filter>
        </activity>
        <activity android:name="com.android.camera.ProxyLauncher"
                android:theme="@android:style/Theme.NoDisplay">
        </activity>
    </application>
</manifest>
+1 −1
Original line number Diff line number Diff line
@@ -22,6 +22,6 @@ include $(CLEAR_VARS)

LOCAL_MODULE := com.android.gallery3d.common2
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SDK_VERSION := 8
LOCAL_SDK_VERSION := 16

include $(BUILD_STATIC_JAVA_LIBRARY)
+212 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.gallery3d.common;

import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.hardware.Camera;
import android.os.Build;
import android.provider.MediaStore.MediaColumns;
import android.view.View;

import java.lang.reflect.Field;

public class ApiHelper {
    public static interface VERSION_CODES {
        // These value are copied from Build.VERSION_CODES
        public static final int GINGERBREAD_MR1 = 10;
        public static final int HONEYCOMB = 11;
        public static final int HONEYCOMB_MR1 = 12;
        public static final int HONEYCOMB_MR2 = 13;
        public static final int ICE_CREAM_SANDWICH = 14;
        public static final int ICE_CREAM_SANDWICH_MR1 = 15;
        public static final int JELLY_BEAN = 16;
        public static final int JELLY_BEAN_MR1 = 17;
    }

    public static final boolean USE_888_PIXEL_FORMAT =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;

    public static final boolean ENABLE_PHOTO_EDITOR =
            Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH;

    public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE =
            hasField(View.class, "SYSTEM_UI_FLAG_LAYOUT_STABLE");

    public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_HIDE_NAVIGATION =
            hasField(View.class, "SYSTEM_UI_FLAG_HIDE_NAVIGATION");

    public static final boolean HAS_MEDIA_COLUMNS_WIDTH_AND_HEIGHT =
            hasField(MediaColumns.class, "WIDTH");

    public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_REGION_DECODER =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;

    public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_FACTORY =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_SET_BEAM_PUSH_URIS =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;

    public static final boolean HAS_SET_DEFALT_BUFFER_SIZE = hasMethod(
            "android.graphics.SurfaceTexture", "setDefaultBufferSize",
            int.class, int.class);

    public static final boolean HAS_RELEASE_SURFACE_TEXTURE = hasMethod(
            "android.graphics.SurfaceTexture", "release");

    public static final boolean HAS_SURFACE_TEXTURE =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_MTP =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1;

    public static final boolean HAS_AUTO_FOCUS_MOVE_CALLBACK =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;

    public static final boolean HAS_REMOTE_VIEWS_SERVICE =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_INTENT_EXTRA_LOCAL_ONLY =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_SET_SYSTEM_UI_VISIBILITY =
            hasMethod(View.class, "setSystemUiVisibility", int.class);

    public static final boolean HAS_FACE_DETECTION;
    static {
        boolean hasFaceDetection = false;
        try {
            Class<?> listenerClass = Class.forName(
                    "android.hardware.Camera$FaceDetectionListener");
            hasFaceDetection =
                    hasMethod(Camera.class, "setFaceDetectionListener", listenerClass) &&
                    hasMethod(Camera.class, "startFaceDetection") &&
                    hasMethod(Camera.class, "stopFaceDetection") &&
                    hasMethod(Camera.Parameters.class, "getMaxNumDetectedFaces");
        } catch (Throwable t) {
        }
        HAS_FACE_DETECTION = hasFaceDetection;
    }

    public static final boolean HAS_GET_CAMERA_DISABLED =
            hasMethod(DevicePolicyManager.class, "getCameraDisabled", ComponentName.class);

    public static final boolean HAS_MEDIA_ACTION_SOUND =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;

    public static final boolean HAS_OLD_PANORAMA =
            Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH;

    public static final boolean HAS_TIME_LAPSE_RECORDING =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_ZOOM_WHEN_RECORDING =
            Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH;

    public static final boolean HAS_CAMERA_FOCUS_AREA =
            Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH;

    public static final boolean HAS_CAMERA_METERING_AREA =
            Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH;

    public static final boolean HAS_FINE_RESOLUTION_QUALITY_LEVELS =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_MOTION_EVENT_TRANSFORM =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_EFFECTS_RECORDING = false;

    // "Background" filter does not have "context" input port in jelly bean.
    public static final boolean HAS_EFFECTS_RECORDING_CONTEXT_INPUT =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1;

    public static final boolean HAS_GET_SUPPORTED_VIDEO_SIZE =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_SET_ICON_ATTRIBUTE =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_MEDIA_PROVIDER_FILES_TABLE =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_SURFACE_TEXTURE_RECORDING =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;

    public static final boolean HAS_ACTION_BAR =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    // Ex: View.setTranslationX.
    public static final boolean HAS_VIEW_TRANSFORM_PROPERTIES =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean HAS_CAMERA_HDR =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1;

    public static final boolean HAS_OPTIONS_IN_MUTABLE =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;

    public static final boolean CAN_START_PREVIEW_IN_JPEG_CALLBACK =
            Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH;

    public static final boolean HAS_VIEW_PROPERTY_ANIMATOR =
            Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1;

    public static final boolean HAS_POST_ON_ANIMATION =
            Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;

    public static int getIntFieldIfExists(Class<?> klass, String fieldName,
            Class<?> obj, int defaultVal) {
        try {
            Field f = klass.getDeclaredField(fieldName);
            return f.getInt(obj);
        } catch (Exception e) {
            return defaultVal;
        }
    }

    private static boolean hasField(Class<?> klass, String fieldName) {
        try {
            klass.getDeclaredField(fieldName);
            return true;
        } catch (NoSuchFieldException e) {
            return false;
        }
    }

    private static boolean hasMethod(String className, String methodName,
            Class<?>... parameterTypes) {
        try {
            Class<?> klass = Class.forName(className);
            klass.getDeclaredMethod(methodName, parameterTypes);
            return true;
        } catch (Throwable th) {
            return false;
        }
    }

    private static boolean hasMethod(
            Class<?> klass, String methodName, Class<?> ... paramTypes) {
        try {
            klass.getDeclaredMethod(methodName, paramTypes);
            return true;
        } catch (NoSuchMethodException e) {
            return false;
        }
    }
}
+66 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.gallery3d.common;

import android.os.AsyncTask;
import android.os.Build;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.concurrent.Executor;

/**
 * Helper class to execute an AsyncTask in parallel if SDK version is 11 or newer.
 */
public class AsyncTaskUtil {
    private static Method sMethodExecuteOnExecutor;
    private static Executor sExecutor;
    static {
        if (Build.VERSION.SDK_INT >= 11) {
            try {
                sExecutor = (Executor) AsyncTask.class.getField("THREAD_POOL_EXECUTOR")
                        .get(null);
                sMethodExecuteOnExecutor = AsyncTask.class.getMethod(
                        "executeOnExecutor", Executor.class, Object[].class);
            } catch (IllegalAccessException e) {
                throw new RuntimeException(e);
            } catch (NoSuchFieldException e) {
                throw new RuntimeException(e);
            } catch (NoSuchMethodException e) {
                throw new RuntimeException(e);
            }
        }
    }

    public static <Param> void executeInParallel(AsyncTask<Param, ?, ?> task, Param... params) {
        if (Build.VERSION.SDK_INT < 11) {
            task.execute(params);
        } else {
            try {
                sMethodExecuteOnExecutor.invoke(task, sExecutor, params);
            } catch (IllegalAccessException e) {
                throw new RuntimeException(e);
            } catch (InvocationTargetException e) {
                throw new RuntimeException(e);
            }
        }
    }

    private AsyncTaskUtil() {
    }
}
Loading