33
33
import androidx .core .content .FileProvider ;
34
34
import androidx .fragment .app .Fragment ;
35
35
36
+ import static android .content .Intent .FLAG_GRANT_READ_URI_PERMISSION ;
37
+ import static android .content .Intent .FLAG_GRANT_WRITE_URI_PERMISSION ;
38
+
36
39
/**
37
40
* Created by jrvansuita build 07/02/17.
38
41
*/
@@ -87,6 +90,8 @@ private Intent getCameraIntent() {
87
90
} else {
88
91
cameraIntent = new Intent (MediaStore .ACTION_IMAGE_CAPTURE );
89
92
}
93
+ cameraIntent .addFlags (FLAG_GRANT_READ_URI_PERMISSION );
94
+ cameraIntent .addFlags (FLAG_GRANT_WRITE_URI_PERMISSION );
90
95
cameraIntent .putExtra (MediaStore .EXTRA_OUTPUT , cameraUriForProvider ());
91
96
92
97
applyProviderPermission ();
@@ -97,9 +102,16 @@ private Intent getCameraIntent() {
97
102
98
103
public void launchCamera (Fragment listener ) {
99
104
105
+
100
106
cameraFile ().delete ();
107
+ saveFile = null ;
108
+
109
+
101
110
102
- Intent chooser = Intent .createChooser (getCameraIntent (), setup .getCameraChooserTitle ());
111
+ Intent chooser = getCameraIntent ();
112
+ if (setup .isUseChooser ()){
113
+ chooser = Intent .createChooser (chooser , setup .getCameraChooserTitle ());
114
+ }
103
115
listener .startActivityForResult (chooser , REQUESTER );
104
116
}
105
117
@@ -110,7 +122,7 @@ private void applyProviderPermission() {
110
122
List <ResolveInfo > resInfoList = activity .getPackageManager ().queryIntentActivities (cameraIntent , PackageManager .MATCH_DEFAULT_ONLY );
111
123
for (ResolveInfo resolveInfo : resInfoList ) {
112
124
String packageName = resolveInfo .activityInfo .packageName ;
113
- activity .grantUriPermission (packageName , cameraUriForProvider (), Intent . FLAG_GRANT_WRITE_URI_PERMISSION | Intent . FLAG_GRANT_READ_URI_PERMISSION );
125
+ activity .grantUriPermission (packageName , cameraUriForProvider (), FLAG_GRANT_WRITE_URI_PERMISSION | FLAG_GRANT_READ_URI_PERMISSION );
114
126
}
115
127
}
116
128
@@ -138,7 +150,9 @@ private File cameraFile() {
138
150
}
139
151
140
152
// File directory = new File(activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES),"teste");
141
- directory .mkdirs ();
153
+ if (!directory .exists ())
154
+ directory .mkdirs ();
155
+
142
156
saveFile = new File (directory , fileName );
143
157
Log .i ("File-PickImage" , saveFile .getAbsolutePath ());
144
158
@@ -167,7 +181,14 @@ private Uri cameraUriForProvider() {
167
181
168
182
private Intent getGalleryIntent () {
169
183
if (galleryIntent == null ) {
170
- galleryIntent = new Intent (Intent .ACTION_PICK , MediaStore .Images .Media .EXTERNAL_CONTENT_URI );
184
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT ) {
185
+ galleryIntent = new Intent (Intent .ACTION_OPEN_DOCUMENT );
186
+ galleryIntent .addCategory (Intent .CATEGORY_OPENABLE );
187
+ galleryIntent .addFlags (FLAG_GRANT_READ_URI_PERMISSION );
188
+ galleryIntent .addFlags (FLAG_GRANT_WRITE_URI_PERMISSION );
189
+ }else {
190
+ galleryIntent = new Intent (Intent .ACTION_PICK , MediaStore .Images .Media .EXTERNAL_CONTENT_URI );
191
+ }
171
192
if (setup .isVideo ()) {
172
193
galleryIntent .setType (activity .getString (R .string .video_content_type ));
173
194
} else {
@@ -179,7 +200,10 @@ private Intent getGalleryIntent() {
179
200
}
180
201
181
202
public void launchGallery (Fragment listener ,String title ) {
182
- Intent intent = Intent .createChooser (getGalleryIntent (),title );
203
+ Intent intent = getGalleryIntent ();
204
+ if (setup .isUseChooser ()){
205
+ intent = Intent .createChooser (intent , title );
206
+ }
183
207
try {
184
208
listener .startActivityForResult (intent , REQUESTER );
185
209
} catch (ActivityNotFoundException e ) {
0 commit comments