From a66860f0ca4f0822ccd317da7c836a5a77715c00 Mon Sep 17 00:00:00 2001 From: Ray Li Date: Sun, 26 Aug 2018 11:42:21 -0500 Subject: [PATCH] v2.0.0 Rollup *Version Bump to v2.0.0. *FIX restore instance state crash. *Restore permissions dialog on resume. --- app/build.gradle | 8 +- build.gradle | 4 +- custompermissionsdialogue/build.gradle | 8 +- .../PermissionsDialogue.java | 266 +++++++++++------- gradle/wrapper/gradle-wrapper.properties | 2 +- 5 files changed, 168 insertions(+), 120 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d98e973..68b3c58 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,8 @@ dependencies { implementation project(path: ':custompermissionsdialogue') implementation 'com.github.searchy2:CustomButton:1.8.0' - implementation 'androidx.appcompat:appcompat:1.0.0-alpha3' - implementation 'com.google.android.material:material:1.0.0-alpha3' - implementation 'androidx.vectordrawable:vectordrawable:1.0.0-alpha3' - implementation 'androidx.cardview:cardview:1.0.0-alpha3' + implementation 'androidx.appcompat:appcompat:1.0.0-rc01' + implementation 'com.google.android.material:material:1.0.0-rc01' + implementation 'androidx.vectordrawable:vectordrawable:1.0.0-rc01' + implementation 'androidx.cardview:cardview:1.0.0-rc01' } diff --git a/build.gradle b/build.gradle index 3397a29..039db4f 100644 --- a/build.gradle +++ b/build.gradle @@ -7,8 +7,8 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0-beta02' - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' + classpath 'com.android.tools.build:gradle:3.2.0-beta05' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/custompermissionsdialogue/build.gradle b/custompermissionsdialogue/build.gradle index 2ff66a8..36aabd9 100644 --- a/custompermissionsdialogue/build.gradle +++ b/custompermissionsdialogue/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' group='com.github.searchy2' -version = '1.9.0' +version = '2.0.0' android { compileSdkVersion 28 @@ -27,10 +27,10 @@ dependencies { maven { url "https://maven.google.com" } } implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.0.0-alpha3' implementation 'com.github.searchy2:CustomButton:1.8.0' - implementation 'com.google.android.material:material:1.0.0-alpha3' - implementation 'androidx.vectordrawable:vectordrawable:1.0.0-alpha3' + implementation 'androidx.appcompat:appcompat:1.0.0-rc01' + implementation 'com.google.android.material:material:1.0.0-rc01' + implementation 'androidx.vectordrawable:vectordrawable:1.0.0-rc01' implementation 'com.github.Dimezis:BlurView:v1.4.0-SNAPSHOT' } diff --git a/custompermissionsdialogue/src/main/java/stream/custompermissionsdialogue/PermissionsDialogue.java b/custompermissionsdialogue/src/main/java/stream/custompermissionsdialogue/PermissionsDialogue.java index 96fb43c..fa64297 100644 --- a/custompermissionsdialogue/src/main/java/stream/custompermissionsdialogue/PermissionsDialogue.java +++ b/custompermissionsdialogue/src/main/java/stream/custompermissionsdialogue/PermissionsDialogue.java @@ -81,9 +81,26 @@ public static PermissionsDialogue getInstance() { @Override public void onCreate(@Nullable Bundle savedInstanceState) { + if (savedInstanceState != null) { + if (builder == null) { + builder = savedInstanceState.getParcelable(Builder.class.getSimpleName()); + } + } setStyle(DialogFragment.STYLE_NO_TITLE, R.style.PermissionsDialogue); setRetainInstance(true); + if (builder != null) + { + if (!builder.getCancelable()) + { + this.setCancelable(false); + } + else + { + this.setCancelable(true); + } + } super.onCreate(savedInstanceState); + mContext = getActivity(); } @Override @@ -128,7 +145,6 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mButton = getView().findViewById(R.id.permissions_btn); - mContext = getContext(); initPermissionsView(view); } @@ -288,7 +304,7 @@ private void initOptionalPermissionsRecyclerView(View view) { private void initPermissionsButton(View view) { mButton = view.findViewById(R.id.permissions_btn); - if (builder.getRequiredRequestPermissions().size() == 0) + if (getRequiredRequestPermissions().size() == 0) { mButton.setText("Continue"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { @@ -331,7 +347,7 @@ public void run() { public void onClick(View view) { mButton.startAnimation(AnimateButton()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - ArrayList requestPermissions = builder.getRequiredRequestPermissions(); + ArrayList requestPermissions = getRequiredRequestPermissions(); if (!requestPermissions.isEmpty()) { requestPermissions(requestPermissions.toArray(new String[requestPermissions.size()]), REQUEST_PERMISSIONS); } @@ -387,7 +403,7 @@ public void onClick(View view) { } }); } - else if (builder.getRequiredRequestPermissions().size() == 0) + else if (getRequiredRequestPermissions().size() == 0) { mButton.setText("Success!"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { @@ -445,7 +461,7 @@ public void run() { public void onClick(View view) { mButton.startAnimation(AnimateButton()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - ArrayList requestPermissions = builder.getRequiredRequestPermissions(); + ArrayList requestPermissions = getRequiredRequestPermissions(); if (!requestPermissions.isEmpty()) { requestPermissions(requestPermissions.toArray(new String[requestPermissions.size()]), REQUEST_PERMISSIONS); } else { @@ -522,6 +538,7 @@ protected Builder(Parcel in) { autoHide = in.readByte() != 0; cancelable = in.readByte() != 0; showIcon = in.readByte() != 0; + icon = in.readInt(); phone = in.readInt(); sms = in.readInt(); contacts = in.readInt(); @@ -530,20 +547,16 @@ protected Builder(Parcel in) { camera = in.readInt(); audio = in.readInt(); location = in.readInt(); + phonedescription = in.readString(); + smsdescription = in.readString(); + contactsdescription = in.readString(); + calendardescription = in.readString(); + storagedescription = in.readString(); + cameradescription = in.readString(); + audiodescription = in.readString(); + locationdescription = in.readString(); } - public static final Creator CREATOR = new Creator() { - @Override - public Builder createFromParcel(Parcel in) { - return new Builder(in); - } - - @Override - public Builder[] newArray(int size) { - return new Builder[size]; - } - }; - public Builder getBuilder() { return this; } /** @@ -898,98 +911,6 @@ public ArrayList getOptionalPermissions() return requiredPermissions; } - public ArrayList getRequiredRequestPermissions() - { - ArrayList requestPermissions = new ArrayList<>(); - if (requirePhone() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.CALL_PHONE)) { - requestPermissions.add(Manifest.permission.CALL_PHONE); - } - } - if (requireSMS() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.SEND_SMS)) { - requestPermissions.add(Manifest.permission.SEND_SMS); - } - } - if (requireContacts() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.WRITE_CONTACTS)) { - requestPermissions.add(Manifest.permission.WRITE_CONTACTS); - } - } - if (requireCalendar() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.WRITE_CALENDAR)) { - requestPermissions.add(Manifest.permission.WRITE_CALENDAR); - } - } - if (requireStorage() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - requestPermissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); - } - } - if (requireCamera() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.CAMERA)) { - requestPermissions.add(Manifest.permission.CAMERA); - } - } - if (requireAudio() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.RECORD_AUDIO)) { - requestPermissions.add(Manifest.permission.RECORD_AUDIO); - } - } - if (requireLocation() == REQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.ACCESS_FINE_LOCATION)) { - requestPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); - } - } - return requestPermissions; - } - - public ArrayList getAllRequestPermissions() - { - ArrayList requestPermissions = new ArrayList<>(); - if (requirePhone() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.CALL_PHONE)) { - requestPermissions.add(Manifest.permission.CALL_PHONE); - } - } - if (requireSMS() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.SEND_SMS)) { - requestPermissions.add(Manifest.permission.SEND_SMS); - } - } - if (requireContacts() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.WRITE_CONTACTS)) { - requestPermissions.add(Manifest.permission.WRITE_CONTACTS); - } - } - if (requireCalendar() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.WRITE_CALENDAR)) { - requestPermissions.add(Manifest.permission.WRITE_CALENDAR); - } - } - if (requireStorage() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - requestPermissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); - } - } - if (requireCamera() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.CAMERA)) { - requestPermissions.add(Manifest.permission.CAMERA); - } - } - if (requireAudio() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.RECORD_AUDIO)) { - requestPermissions.add(Manifest.permission.RECORD_AUDIO); - } - } - if (requireLocation() > NOTREQUIRED) { - if (!PermissionUtils.IsPermissionEnabled(context, Manifest.permission.ACCESS_FINE_LOCATION)) { - requestPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); - } - } - return requestPermissions; - } - /** * @param decorView - pass the Window DecorView for a nice blurred background. Defaults to overlay color. * Here's how to pass the correct DecorView in the following classes: @@ -1024,6 +945,18 @@ public Dialog show() { return PermissionsDialogue.getInstance().show(((Activity) context), this); } + public static final Creator CREATOR = new Creator() { + @Override + public Builder createFromParcel(Parcel in) { + return new Builder(in); + } + + @Override + public Builder[] newArray(int size) { + return new Builder[size]; + } + }; + @Override public int describeContents() { return 0; @@ -1031,6 +964,29 @@ public int describeContents() { @Override public void writeToParcel(Parcel parcel, int i) { + parcel.writeString(title); + parcel.writeString(message); + parcel.writeString(messageOptional); + parcel.writeInt((byte) (autoHide ? 1 : 0)); + parcel.writeInt((byte) (cancelable ? 1 : 0)); + parcel.writeInt((byte) (showIcon ? 1 : 0)); + parcel.writeInt(icon); + parcel.writeInt(phone); + parcel.writeInt(sms); + parcel.writeInt(contacts); + parcel.writeInt(calendar); + parcel.writeInt(storage); + parcel.writeInt(camera); + parcel.writeInt(audio); + parcel.writeInt(location); + parcel.writeString(phonedescription); + parcel.writeString(smsdescription); + parcel.writeString(contactsdescription); + parcel.writeString(calendardescription); + parcel.writeString(storagedescription); + parcel.writeString(cameradescription); + parcel.writeString(audiodescription); + parcel.writeString(locationdescription); } } @@ -1043,6 +999,98 @@ public interface OnContinueClicked { void OnClick(View view, Dialog dialog); } + public ArrayList getRequiredRequestPermissions() + { + ArrayList requestPermissions = new ArrayList<>(); + if (builder.requirePhone() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.CALL_PHONE)) { + requestPermissions.add(Manifest.permission.CALL_PHONE); + } + } + if (builder.requireSMS() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.SEND_SMS)) { + requestPermissions.add(Manifest.permission.SEND_SMS); + } + } + if (builder.requireContacts() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.WRITE_CONTACTS)) { + requestPermissions.add(Manifest.permission.WRITE_CONTACTS); + } + } + if (builder.requireCalendar() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.WRITE_CALENDAR)) { + requestPermissions.add(Manifest.permission.WRITE_CALENDAR); + } + } + if (builder.requireStorage() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + requestPermissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + } + } + if (builder.requireCamera() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.CAMERA)) { + requestPermissions.add(Manifest.permission.CAMERA); + } + } + if (builder.requireAudio() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.RECORD_AUDIO)) { + requestPermissions.add(Manifest.permission.RECORD_AUDIO); + } + } + if (builder.requireLocation() == REQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.ACCESS_FINE_LOCATION)) { + requestPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); + } + } + return requestPermissions; + } + + public ArrayList getAllRequestPermissions() + { + ArrayList requestPermissions = new ArrayList<>(); + if (builder.requirePhone() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.CALL_PHONE)) { + requestPermissions.add(Manifest.permission.CALL_PHONE); + } + } + if (builder.requireSMS() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.SEND_SMS)) { + requestPermissions.add(Manifest.permission.SEND_SMS); + } + } + if (builder.requireContacts() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.WRITE_CONTACTS)) { + requestPermissions.add(Manifest.permission.WRITE_CONTACTS); + } + } + if (builder.requireCalendar() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.WRITE_CALENDAR)) { + requestPermissions.add(Manifest.permission.WRITE_CALENDAR); + } + } + if (builder.requireStorage() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + requestPermissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + } + } + if (builder.requireCamera() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.CAMERA)) { + requestPermissions.add(Manifest.permission.CAMERA); + } + } + if (builder.requireAudio() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.RECORD_AUDIO)) { + requestPermissions.add(Manifest.permission.RECORD_AUDIO); + } + } + if (builder.requireLocation() > NOTREQUIRED) { + if (!PermissionUtils.IsPermissionEnabled(mContext, Manifest.permission.ACCESS_FINE_LOCATION)) { + requestPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); + } + } + return requestPermissions; + } + public Animation AnimateButton() { // Load the animation final Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.bounce); diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8b455bd..2e03ffd 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip