导航菜单

页面标题

页面副标题

微商客 v2.1.2 - PickImageActivity.java 源代码

正在查看: 微商客 v2.1.2 应用的 PickImageActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.qiyukf.uikit.session.activity;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.TextUtils;
import androidx.fragment.app.Fragment;
import com.qiyukf.module.log.UnicornLog;
import com.qiyukf.uikit.common.activity.BaseFragmentActivity;
import com.qiyukf.uikit.common.media.picker.activity.PickerAlbumActivity;
import com.qiyukf.uikit.provider.UnicornProvider;
import com.qiyukf.unicorn.R;
import com.qiyukf.unicorn.n.r;
import java.io.File;

public class PickImageActivity extends BaseFragmentActivity {
    public static final int FROM_CAMERA = 2;
    public static final int FROM_LOCAL = 1;
    private static final String KEY_STATE = "state";
    private static final int PICK_IMAGE_COUNT = 9;
    private static final int REQUEST_CODE_CAMERA = 2;
    private static final int REQUEST_CODE_LOCAL = 1;
    private static final String TAG = "PickImageActivity";
    private boolean inited = false;

    public static void start(Activity activity, int i, int i2, String str, boolean z, int i3, boolean z2, boolean z3, int i4, int i5) {
        Intent intent = new Intent(activity, (Class<?>) PickImageActivity.class);
        intent.putExtra("from", i2);
        intent.putExtra("file_path", str);
        intent.putExtra("multi_select_mode", z);
        intent.putExtra("multi_select_size_limit", i3);
        intent.putExtra("support_original", z2);
        intent.putExtra("need-crop", z3);
        intent.putExtra("outputX", i4);
        intent.putExtra("outputY", i5);
        activity.startActivityForResult(intent, i);
    }

    public static void start(Activity activity, int i, int i2, String str) {
        Intent intent = new Intent(activity, (Class<?>) PickImageActivity.class);
        intent.putExtra("from", i2);
        intent.putExtra("file_path", str);
        activity.startActivityForResult(intent, i);
    }

    public static void start(Fragment fragment, int i, int i2, String str) {
        Intent intent = new Intent((Context) fragment.getActivity(), (Class<?>) PickImageActivity.class);
        intent.putExtra("from", i2);
        intent.putExtra("file_path", str);
        fragment.startActivityForResult(intent, i);
    }

    public static void start(Fragment fragment, int i, int i2, String str, boolean z, int i3, boolean z2, boolean z3, int i4, int i5) {
        Intent intent = new Intent((Context) fragment.getActivity(), (Class<?>) PickImageActivity.class);
        intent.putExtra("from", i2);
        intent.putExtra("file_path", str);
        intent.putExtra("multi_select_mode", z);
        intent.putExtra("multi_select_size_limit", i3);
        intent.putExtra("support_original", z2);
        intent.putExtra("need-crop", z3);
        intent.putExtra("outputX", i4);
        intent.putExtra("outputY", i5);
        fragment.startActivityForResult(intent, i);
    }

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.ysf_pick_image_activity);
    }

    protected void onResume() {
        super.onResume();
        if (this.inited) {
            return;
        }
        processIntent();
        this.inited = true;
    }

    protected void onSaveInstanceState(Bundle bundle) {
        super.onSaveInstanceState(bundle);
        bundle.putBoolean(KEY_STATE, this.inited);
    }

    protected void onRestoreInstanceState(Bundle bundle) {
        super.onRestoreInstanceState(bundle);
        if (bundle != null) {
            this.inited = bundle.getBoolean(KEY_STATE);
        }
    }

    private void processIntent() {
        if (getIntent().getIntExtra("from", 1) == 1) {
            pickFromLocal();
        } else {
            pickFromCamera();
        }
    }

    private void pickFromLocal() {
        try {
            startActivityForResult(getPickIntent(), 1);
        } catch (Exception e) {
            UnicornLog.i(TAG, "pickFromLocal is error", e);
            r.b(R.string.ysf_picker_image_sdcard_not_enough_error);
            finish();
        }
    }

    private void pickFromCamera() {
        Uri fromFile;
        try {
            String stringExtra = getIntent().getStringExtra("file_path");
            if (TextUtils.isEmpty(stringExtra)) {
                r.b(R.string.ysf_picker_image_sdcard_not_enough_error);
                finish();
                return;
            }
            File file = new File(stringExtra);
            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            intent.addFlags(1);
            if (UnicornProvider.useFileProvider(this)) {
                fromFile = UnicornProvider.getUriForFile(this, file);
            } else {
                fromFile = Uri.fromFile(file);
            }
            intent.putExtra("output", fromFile);
            startActivityForResult(intent, 2);
        } catch (ActivityNotFoundException e) {
            finish();
            UnicornLog.i(TAG, "pickFromCamera is error", e);
        } catch (Exception e2) {
            r.b(R.string.ysf_picker_image_sdcard_not_enough_error);
            UnicornLog.i(TAG, "pickFromCamera is error", e2);
        }
    }

    private Intent getPickIntent() {
        boolean booleanExtra = getIntent().getBooleanExtra("multi_select_mode", false);
        int intExtra = getIntent().getIntExtra("multi_select_size_limit", 9);
        boolean booleanExtra2 = getIntent().getBooleanExtra("support_original", false);
        Intent intent = new Intent();
        intent.setClass(this, PickerAlbumActivity.class);
        intent.putExtra("multi_select_mode", booleanExtra);
        intent.putExtra("multi_select_size_limit", intExtra);
        intent.putExtra("support_original", booleanExtra2);
        return intent;
    }

    private String pathFromResult(Intent intent) {
        String stringExtra = getIntent().getStringExtra("file_path");
        if (intent != null && intent.getData() != null) {
            Uri data = intent.getData();
            Cursor query = getContentResolver().query(data, null, null, null, null);
            if (query == null) {
                return stringExtra;
            }
            if (data.toString().contains("content://com.android.providers.media.documents/document/image")) {
                String decode = Uri.decode(data.toString());
                String substring = decode.substring(decode.lastIndexOf(":") + 1);
                closeCursor(query);
                query = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, " _id = ".concat(String.valueOf(substring)), null, null);
            }
            if (query == null) {
                return stringExtra;
            }
            query.moveToFirst();
            int columnIndex = query.getColumnIndex("_data");
            if (columnIndex >= 0) {
                stringExtra = query.getString(columnIndex);
            }
            closeCursor(query);
        }
        return stringExtra;
    }

    private void closeCursor(Cursor cursor) {
        if (cursor == null || cursor.isClosed()) {
            return;
        }
        cursor.close();
    }

    private void onPickedLocal(Intent intent) {
        if (intent != null) {
            try {
                Intent intent2 = new Intent(intent);
                intent2.putExtra("from_local", true);
                setResult(-1, intent2);
                finish();
            } catch (Exception e) {
                r.b(R.string.ysf_picker_image_error);
                UnicornLog.i(TAG, "onPickedLocal is error", e);
                finish();
            }
        }
    }

    private void onPickedCamera(Intent intent) {
        try {
            String pathFromResult = pathFromResult(intent);
            if (!TextUtils.isEmpty(pathFromResult)) {
                Intent intent2 = new Intent();
                intent2.putExtra("from_local", false);
                intent2.putExtra("file_path", pathFromResult);
                setResult(-1, intent2);
            }
            finish();
        } catch (Exception e) {
            r.b(R.string.ysf_picker_image_error);
            UnicornLog.i(TAG, "onPickedCamera is error", e);
            finish();
        }
    }

    protected void onActivityResult(int i, int i2, Intent intent) {
        super.onActivityResult(i, i2, intent);
        if (i2 != -1) {
            setResult(i2);
            finish();
        } else if (i == 1) {
            onPickedLocal(intent);
        } else {
            if (i != 2) {
                return;
            }
            onPickedCamera(intent);
        }
    }
}