IntentUtils.java
3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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) {
toHomeActivity(activity, new Intent());
}
public static void toHomeActivity(Activity activity, Intent intent) {
if (BuildConfig.DEBUG) {
intent.setClass(activity, HomeActivity.class);
} else {
intent.setClass(activity, HomeActivity.class);
}
startActivity(activity, intent);
}
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";
}
}