Skip to content
This repository was archived by the owner on Oct 3, 2024. It is now read-only.

Commit c16abaa

Browse files
SUPERCILEXsamtstern
authored andcommitted
Make settings dialog non-closable and survive rotation (#75)
1 parent 209a517 commit c16abaa

File tree

6 files changed

+240
-87
lines changed

6 files changed

+240
-87
lines changed

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Android M or higher.
77

88
EasyPermissions is installed by adding the following dependency to your `build.gradle` file:
99

10-
```java
10+
```groovy
1111
dependencies {
1212
compile 'pub.devrel:easypermissions:0.2.1'
1313
}
@@ -74,8 +74,7 @@ Optionally, for a finer control, you can have your `Activity` / `Fragment` imple
7474
the `PermissionCallbacks` interface.
7575

7676
```java
77-
public class MainActivity extends AppCompatActivity
78-
implements EasyPermissions.PermissionCallbacks {
77+
public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
7978

8079
@Override
8180
protected void onCreate(Bundle savedInstanceState) {
@@ -124,8 +123,7 @@ public void onPermissionsDenied(int requestCode, List<String> perms) {
124123
new AppSettingsDialog.Builder(this, getString(R.string.rationale_ask_again))
125124
.setTitle(getString(R.string.title_settings_dialog))
126125
.setPositiveButton(getString(R.string.setting))
127-
.setNegativeButton(getString(R.string.cancel), null /* click listener */)
128-
.setRequestCode(RC_SETTINGS_SCREEN)
126+
.setNegativeButton(getString(R.string.cancel))
129127
.build()
130128
.show();
131129
}
@@ -135,7 +133,7 @@ public void onPermissionsDenied(int requestCode, List<String> perms) {
135133
public void onActivityResult(int requestCode, int resultCode, Intent data) {
136134
super.onActivityResult(requestCode, resultCode, data);
137135

138-
if (requestCode == RC_SETTINGS_SCREEN) {
136+
if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) {
139137
// Do something after user returned from app settings screen, like showing a Toast.
140138
Toast.makeText(this, R.string.returned_from_app_settings_to_activity, Toast.LENGTH_SHORT)
141139
.show();

app/src/main/java/pub/devrel/easypermissions/sample/MainActivity.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ public class MainActivity extends AppCompatActivity implements EasyPermissions.P
3636

3737
private static final int RC_CAMERA_PERM = 123;
3838
private static final int RC_LOCATION_CONTACTS_PERM = 124;
39-
private static final int RC_SETTINGS_SCREEN = 125;
4039

4140
@Override
4241
protected void onCreate(Bundle savedInstanceState) {
@@ -60,17 +59,6 @@ public void onClick(View v) {
6059
});
6160
}
6261

63-
@Override
64-
public void onActivityResult(int requestCode, int resultCode, Intent data) {
65-
super.onActivityResult(requestCode, resultCode, data);
66-
67-
if (requestCode == RC_SETTINGS_SCREEN) {
68-
// Do something after user returned from app settings screen, like showing a Toast.
69-
Toast.makeText(this, R.string.returned_from_app_settings_to_activity, Toast.LENGTH_SHORT)
70-
.show();
71-
}
72-
}
73-
7462
@AfterPermissionGranted(RC_CAMERA_PERM)
7563
public void cameraTask() {
7664
if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA)) {
@@ -119,10 +107,20 @@ public void onPermissionsDenied(int requestCode, List<String> perms) {
119107
new AppSettingsDialog.Builder(this, getString(R.string.rationale_ask_again))
120108
.setTitle(getString(R.string.title_settings_dialog))
121109
.setPositiveButton(getString(R.string.setting))
122-
.setNegativeButton(getString(R.string.cancel), null /* click listener */)
123-
.setRequestCode(RC_SETTINGS_SCREEN)
110+
.setNegativeButton(getString(R.string.cancel))
124111
.build()
125112
.show();
126113
}
127114
}
115+
116+
@Override
117+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
118+
super.onActivityResult(requestCode, resultCode, data);
119+
120+
if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) {
121+
// Do something after user returned from app settings screen, like showing a Toast.
122+
Toast.makeText(this, R.string.returned_from_app_settings_to_activity, Toast.LENGTH_SHORT)
123+
.show();
124+
}
125+
}
128126
}
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1-
<manifest package="com.google.example.easypermissions">
2-
<application/>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
package="pub.devrel.easypermissions">
5+
6+
<application>
7+
<activity
8+
android:name="pub.devrel.easypermissions.AppSettingsDialogHolderActivity"
9+
android:exported="false"
10+
android:label=""
11+
android:theme="@style/EasyPermissions.Transparent"/>
12+
</application>
13+
314
</manifest>

0 commit comments

Comments
 (0)