IntentUtils.java 3.51 KB
package com.polysoft.nafmii.utils;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.provider.MediaStore;

import com.whaty.nafmii.BuildConfig;
import com.whaty.nafmii.activity.HomeActivity;
import com.whaty.nafmii.activity.InputUrlActivity;

import java.io.File;

public class IntentUtils {

    public static final int ACTIVITY_CODE_CHOOSERFILE = 0x1000;
    public static final int ACTIVITY_CODE_CAMERA = 0x1001;
    public static final int ACTIVITY_CODE_ALBUM = 0x1002;

    public static Intent chooserIntent(Context context) {
        Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (null != captureIntent.resolveActivity(context.getPackageManager())) {
            String filePath = getTakePhotoPath(context);
            File imgFile = new File(filePath);
            if (!imgFile.getParentFile().exists()) {
                imgFile.getParentFile().mkdirs();
            }
            Uri imageUri = FileProviderUtils.getUriForFile(context, imgFile);
            captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                captureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); //添加这一句表示对目标应用临时授权该Uri所代表的文件
            }

            Intent Photo = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            Intent chooserIntent = Intent.createChooser(Photo, "Image Chooser");
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Parcelable[]{captureIntent});
            return chooserIntent;
        }
        return null;
    }

    public static Intent openCamera(Context context) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File file = new File(getTakePhotoPath(context));
        Uri imgUri = FileProviderUtils.getUriForFile(context, file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
        return intent;
    }

    public static Intent openAlbum(Context context) {
        Intent intent = new Intent(Intent.ACTION_PICK, null);
        File file = new File(getTakePhotoPath(context));
        FileProviderUtils.setIntentDataAndType(context, intent, "image/*", file, false);
        return intent;
    }

    public static void toHomeActivity(Activity activity) {
        if (BuildConfig.DEBUG) {
            startActivity(activity, HomeActivity.class);
        } else {
            startActivity(activity, HomeActivity.class);
        }
    }

    public static void startActivity(Activity activity, Class<? extends Activity> target) {
        startActivity(activity, new Intent(activity, target));
    }

    public static void startActivity(Activity activity, Class<? extends Activity> target, Bundle bundle) {
        Intent intent = new Intent(activity, target);
        intent.putExtra("data", bundle);
        startActivity(activity, intent);
    }

    public static void startActivity(Activity activity, Intent intent) {
        activity.startActivity(intent);
        activity.finish();
    }

    public static String getTakePhotoPath(Context context) {
        return Environment.getExternalStorageDirectory()
                + File.separator + "Android"
                + File.separator + "data"
                + File.separator + context.getPackageName()
                + File.separator + "temp.jpg";
    }
}