Skip to content

Commit a2cf8c3

Browse files
Update compile SDK version, latest gradle and handle Permissions via permission dispatcher
1 parent 78d9b41 commit a2cf8c3

File tree

6 files changed

+56
-91
lines changed

6 files changed

+56
-91
lines changed

app/build.gradle

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 25
5-
buildToolsVersion "25.0.3"
4+
compileSdkVersion 27
5+
buildToolsVersion '27.0.3'
66
defaultConfig {
77
applicationId 'com.vansuita.pickimage.sample'
8-
minSdkVersion 14
9-
targetSdkVersion 25
8+
minSdkVersion 16
9+
targetSdkVersion 27
1010
versionCode 4
1111
versionName "1.0"
1212
}
1313
}
1414

1515
dependencies {
16-
compile project(':library')
17-
compile 'com.jrummyapps:colorpicker:2.0.4'
16+
implementation project(':library')
17+
implementation("com.jrummyapps:colorpicker:2.0.4") {
18+
// if you don't use android.app.Fragment you can exclude support for them
19+
exclude module: "support-v7"
20+
}
1821
}

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
buildscript {
44
repositories {
55
jcenter()
6+
google()
67
}
78

89
dependencies {
910

10-
classpath 'com.android.tools.build:gradle:2.3.0'
11+
classpath 'com.android.tools.build:gradle:3.1.3'
1112
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // Add this line
1213
}
1314
}
@@ -17,6 +18,7 @@ allprojects {
1718
jcenter()
1819

1920
maven { url "https://jitpack.io" }
21+
google()
2022
}
2123
}
2224

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Fri Mar 10 13:58:41 BRT 2017
1+
#Tue Jun 12 14:56:02 CEST 2018
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

library/build.gradle

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ apply plugin: 'com.github.dcendents.android-maven'
55
group = 'com.github.jrvansuita'
66

77
android {
8-
compileSdkVersion 25
9-
buildToolsVersion "25.0.3"
8+
compileSdkVersion 27
9+
buildToolsVersion '27.0.3'
1010

1111
defaultConfig {
12-
minSdkVersion 9
13-
targetSdkVersion 25
12+
minSdkVersion 16
13+
targetSdkVersion 27
1414
versionCode 1
1515
versionName "1.0"
1616
}
@@ -21,8 +21,14 @@ android {
2121
}
2222

2323
dependencies {
24-
compile 'com.android.support:appcompat-v7:25.2.0'
25-
compile 'com.android.support:cardview-v7:25.2.0'
26-
compile 'com.android.support:support-annotations:25.2.0'
24+
api 'com.android.support:appcompat-v7:27.1.1'
25+
api 'com.android.support:cardview-v7:27.1.1'
26+
api 'com.android.support:support-annotations:27.1.1'
27+
28+
implementation("com.github.hotchemi:permissionsdispatcher:3.2.0") {
29+
// if you don't use android.app.Fragment you can exclude support for them
30+
exclude module: "support-v13"
31+
}
32+
annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.2.0"
2733
}
2834

library/src/main/java/com/vansuita/pickimage/dialog/PickImageBaseDialog.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.vansuita.pickimage.dialog;
22

3+
import android.Manifest;
34
import android.content.Context;
45
import android.graphics.Color;
56
import android.graphics.drawable.ColorDrawable;
67
import android.os.Bundle;
78
import android.os.Handler;
9+
import android.support.annotation.NonNull;
810
import android.support.annotation.Nullable;
911
import android.support.v4.app.DialogFragment;
1012
import android.support.v7.widget.CardView;
@@ -27,12 +29,15 @@
2729
import com.vansuita.pickimage.resolver.IntentResolver;
2830
import com.vansuita.pickimage.util.Util;
2931

32+
import permissions.dispatcher.NeedsPermission;
33+
import permissions.dispatcher.RuntimePermissions;
34+
3035
import static com.vansuita.pickimage.R.layout.dialog;
3136

3237
/**
3338
* Created by jrvansuita on 08/02/17.
3439
*/
35-
40+
@RuntimePermissions
3641
public abstract class PickImageBaseDialog extends DialogFragment implements IPickClick {
3742

3843
protected static final String SETUP_TAG = "SETUP_TAG";
@@ -154,18 +159,18 @@ private boolean isValidProviders() {
154159
}
155160

156161
private void onBindViewsHolders(View v) {
157-
card = (CardView) v.findViewById(R.id.card);
162+
card = v.findViewById(R.id.card);
158163
vFirstLayer = v.findViewById(R.id.first_layer);
159164
vSecondLayer = v.findViewById(R.id.second_layer);
160165
}
161166

162167
private void onBindViews(View v) {
163-
llButtons = (LinearLayout) v.findViewById(R.id.buttons_holder);
164-
tvTitle = (TextView) v.findViewById(R.id.title);
165-
tvCamera = (TextView) v.findViewById(R.id.camera);
166-
tvGallery = (TextView) v.findViewById(R.id.gallery);
167-
tvCancel = (TextView) v.findViewById(R.id.cancel);
168-
tvProgress = (TextView) v.findViewById(R.id.loading_text);
168+
llButtons = v.findViewById(R.id.buttons_holder);
169+
tvTitle = v.findViewById(R.id.title);
170+
tvCamera = v.findViewById(R.id.camera);
171+
tvGallery = v.findViewById(R.id.gallery);
172+
tvCancel = v.findViewById(R.id.cancel);
173+
tvProgress = v.findViewById(R.id.loading_text);
169174
}
170175

171176

@@ -248,15 +253,14 @@ protected void showProgress(boolean show) {
248253
Util.gone(vSecondLayer, !show);
249254
}
250255

251-
256+
@NeedsPermission({Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE})
252257
protected void launchCamera() {
253-
if (resolver.requestCameraPermissions(this))
254-
resolver.launchCamera(this);
258+
resolver.launchCamera(this);
255259
}
256260

261+
@NeedsPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
257262
protected void launchGallery() {
258-
if (resolver.requestGalleryPermissions(this))
259-
resolver.launchGallery(this);
263+
resolver.launchGallery(this);
260264
}
261265

262266
protected boolean launchSystemDialog() {
@@ -335,4 +339,10 @@ protected void onError(Error e) {
335339
dismissAllowingStateLoss();
336340
}
337341
}
342+
343+
@Override
344+
public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) {
345+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
346+
PickImageBaseDialogPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
347+
}
338348
}
Lines changed: 6 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package com.vansuita.pickimage.dialog;
22

3-
import android.Manifest;
43
import android.content.Intent;
5-
import android.content.pm.PackageManager;
64
import android.os.Bundle;
7-
import android.support.annotation.NonNull;
85
import android.support.v4.app.FragmentActivity;
96
import android.support.v4.app.FragmentManager;
107

118
import com.vansuita.pickimage.bundle.PickSetup;
12-
import com.vansuita.pickimage.keep.Keep;
139
import com.vansuita.pickimage.listeners.IPickCancel;
1410
import com.vansuita.pickimage.listeners.IPickClick;
1511
import com.vansuita.pickimage.listeners.IPickResult;
@@ -21,7 +17,6 @@
2117
/**
2218
* Created by jrvansuita build 01/11/16.
2319
*/
24-
2520
public class PickImageDialog extends PickImageBaseDialog {
2621

2722
public static PickImageDialog newInstance(PickSetup setup) {
@@ -62,12 +57,12 @@ public PickImageDialog show(FragmentManager fragmentManager) {
6257

6358
@Override
6459
public void onCameraClick() {
65-
launchCamera();
60+
PickImageBaseDialogPermissionsDispatcher.launchCameraWithPermissionCheck(this);
6661
}
6762

6863
@Override
6964
public void onGalleryClick() {
70-
launchGallery();
65+
PickImageBaseDialogPermissionsDispatcher.launchGalleryWithPermissionCheck(this);
7166
}
7267

7368
@Override
@@ -81,13 +76,12 @@ public PickImageDialog setOnPickResult(IPickResult onPickResult) {
8176
}
8277

8378
@Override
84-
public PickImageDialog setOnPickCancel(IPickCancel onPickCancel)
85-
{
86-
return (PickImageDialog) super.setOnPickCancel(onPickCancel);
87-
}
79+
public PickImageDialog setOnPickCancel(IPickCancel onPickCancel) {
80+
return (PickImageDialog) super.setOnPickCancel(onPickCancel);
81+
}
8882

8983

90-
@Override
84+
@Override
9185
public void onActivityResult(int requestCode, int resultCode, Intent data) {
9286
super.onActivityResult(requestCode, resultCode, data);
9387
if (requestCode == IntentResolver.REQUESTER) {
@@ -102,56 +96,6 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
10296
}
10397
}
10498
}
105-
106-
@Override
107-
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
108-
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
109-
110-
if (requestCode == IntentResolver.REQUESTER) {
111-
boolean granted = true;
112-
113-
for (Integer i : grantResults)
114-
granted = granted && i == PackageManager.PERMISSION_GRANTED;
115-
116-
if (granted) {
117-
if (!launchSystemDialog()) {
118-
// See if the CAMERA permission is among the granted ones
119-
int cameraIndex = -1;
120-
for (int i = 0; i < permissions.length; i++) {
121-
if (permissions[cameraIndex].equals(Manifest.permission.CAMERA)) {
122-
cameraIndex = i;
123-
break;
124-
}
125-
}
126-
127-
if (cameraIndex != -1) {
128-
launchGallery();
129-
} else {
130-
launchCamera();
131-
}
132-
}
133-
} else {
134-
dismissAllowingStateLoss();
135-
136-
if (grantResults.length > 1)
137-
Keep.with(getActivity()).askedForPermission();
138-
}
139-
}
140-
}
141-
142-
143-
/* public static void forceDismiss(FragmentManager fm) {
144-
Fragment fragment = fm.findFragmentByTag(PickImageDialog.DIALOG_FRAGMENT_TAG);
145-
146-
if (fragment != null) {
147-
DialogFragment dialog = (PickImageDialog) fragment;
148-
149-
if (dialog.isVisible())
150-
dialog.dismiss();
151-
}
152-
}*/
153-
154-
15599
}
156100

157101

0 commit comments

Comments
 (0)