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

Commit a11c288

Browse files
SUPERCILEXsamtstern
authored andcommitted
Add defaults to AppSettingsDialog and string res (#74)
1 parent c16abaa commit a11c288

File tree

10 files changed

+122
-33
lines changed

10 files changed

+122
-33
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+
<manifest
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
xmlns:tools="http://schemas.android.com/tools"
35
package="pub.devrel.easypermissions.sample">
46

57
<uses-permission android:name="android.permission.CAMERA" />
@@ -14,7 +16,8 @@
1416
android:icon="@mipmap/ic_launcher"
1517
android:label="@string/app_name"
1618
android:supportsRtl="true"
17-
android:theme="@style/AppTheme">
19+
android:theme="@style/AppTheme"
20+
tools:ignore="AllowBackup,GoogleAppIndexingWarning">
1821
<activity android:name=".MainActivity">
1922
<intent-filter>
2023
<action android:name="android.intent.action.MAIN" />

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,7 @@ public void onPermissionsDenied(int requestCode, List<String> perms) {
104104
// (Optional) Check whether the user denied any permissions and checked "NEVER ASK AGAIN."
105105
// This will display a dialog directing them to enable the permission in app settings.
106106
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
107-
new AppSettingsDialog.Builder(this, getString(R.string.rationale_ask_again))
108-
.setTitle(getString(R.string.title_settings_dialog))
109-
.setPositiveButton(getString(R.string.setting))
110-
.setNegativeButton(getString(R.string.cancel))
111-
.build()
112-
.show();
107+
new AppSettingsDialog.Builder(this).build().show();
113108
}
114109
}
115110

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
<LinearLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
34
xmlns:tools="http://schemas.android.com/tools"
4-
android:orientation="vertical"
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
7+
android:orientation="vertical"
78
tools:context=".BasicActivity">
89

910
<Button
1011
android:id="@+id/button_request"
1112
android:layout_width="wrap_content"
1213
android:layout_height="wrap_content"
13-
android:text="Request" />
14+
android:text="Request"
15+
tools:ignore="HardcodedText"/>
1416

15-
</LinearLayout>
17+
</LinearLayout>

app/src/main/res/layout/activity_main.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
<LinearLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
34
xmlns:tools="http://schemas.android.com/tools"
45
android:layout_width="match_parent"
56
android:layout_height="match_parent"
@@ -13,13 +14,13 @@
1314
android:id="@+id/button_camera"
1415
android:layout_width="wrap_content"
1516
android:layout_height="wrap_content"
16-
android:text="Camera" />
17+
android:text="@string/camera" />
1718

1819
<Button
1920
android:id="@+id/button_location_and_wifi"
2021
android:layout_width="wrap_content"
2122
android:layout_height="wrap_content"
22-
android:text="Location and Contacts" />
23+
android:text="@string/location_and_contacts" />
2324

2425
<fragment
2526
android:id="@+id/fragment"
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
<FrameLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
34
android:layout_width="wrap_content"
45
android:layout_height="wrap_content">
56

67
<Button
78
android:id="@+id/button_sms"
89
android:layout_width="wrap_content"
910
android:layout_height="wrap_content"
10-
android:text="SMS" />
11+
android:text="@string/sms" />
1112

1213
</FrameLayout>

app/src/main/res/values/strings.xml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
<resources>
2-
<string name="app_name">PermissionsTest</string>
2+
<string name="app_name">Easy Permissions</string>
33
<string name="rationale_camera">This app needs access to your camera so you can take pictures.</string>
44
<string name="rationale_location_contacts">This app needs access to your location and contacts to know where and who you are.</string>
55
<string name="rationale_sms">This app needs access to your sms to read all your great messages.</string>
6-
<string name="rationale_ask_again">This app may not work correctly without the requested permissions. Open the app settings screen to modify app permissions.</string>
7-
<string name="title_settings_dialog">Permissions Required</string>
8-
<string name="setting">Settings</string>
9-
<string name="cancel">Cancel</string>
10-
<string name="settings_dialog_canceled">Settings dialog canceled</string>
116
<string name="returned_from_app_settings_to_activity">Returned from app settings to MainActivity</string>
12-
<string name="has_read_sms_permission">Has read sms permission: %b</string>
7+
<string name="camera">Camera</string>
8+
<string name="location_and_contacts">Location and Contacts</string>
9+
<string name="sms">SMS</string>
1310
</resources>

easypermissions/build.gradle

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ android {
1717
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
1818
}
1919
}
20-
21-
lintOptions {
22-
abortOnError false
23-
}
2420
}
2521

2622
dependencies {

easypermissions/src/main/java/pub/devrel/easypermissions/AppSettingsDialog.java

Lines changed: 91 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import android.support.annotation.Nullable;
1414
import android.support.annotation.RequiresApi;
1515
import android.support.annotation.RestrictTo;
16+
import android.support.annotation.StringRes;
1617
import android.support.v4.app.Fragment;
1718
import android.support.v7.app.AlertDialog;
1819
import android.text.TextUtils;
@@ -61,7 +62,7 @@ private AppSettingsDialog(Parcel in) {
6162

6263
private AppSettingsDialog(@NonNull final Object activityOrFragment,
6364
@NonNull final Context context,
64-
@NonNull String rationale,
65+
@Nullable String rationale,
6566
@Nullable String title,
6667
@Nullable String positiveButtonText,
6768
@Nullable String negativeButtonText,
@@ -174,7 +175,10 @@ public static class Builder {
174175
*
175176
* @param activity the {@link Activity} in which to display the dialog.
176177
* @param rationale text explaining why the user should launch the app settings screen.
178+
* @deprecated Use {@link #Builder(Activity)} with {@link #setRationale(String)} or {@link
179+
* #setRationale(int)}.
177180
*/
181+
@Deprecated
178182
public Builder(@NonNull Activity activity, @NonNull String rationale) {
179183
mActivityOrFragment = activity;
180184
mContext = activity;
@@ -186,7 +190,10 @@ public Builder(@NonNull Activity activity, @NonNull String rationale) {
186190
*
187191
* @param fragment the {@link Fragment} in which to display the dialog.
188192
* @param rationale text explaining why the user should launch the app settings screen.
193+
* @deprecated Use {@link #Builder(Fragment)} with {@link #setRationale(String)} or {@link
194+
* #setRationale(int)}.
189195
*/
196+
@Deprecated
190197
public Builder(@NonNull Fragment fragment, @NonNull String rationale) {
191198
mActivityOrFragment = fragment;
192199
mContext = fragment.getContext();
@@ -198,23 +205,85 @@ public Builder(@NonNull Fragment fragment, @NonNull String rationale) {
198205
*
199206
* @param fragment the {@link android.app.Fragment} in which to display the dialog.
200207
* @param rationale text explaining why the user should launch the app settings screen.
208+
* @deprecated Use {@link #Builder(android.app.Fragment)} with {@link #setRationale(String)}
209+
* or {@link #setRationale(int)}.
201210
*/
211+
@Deprecated
202212
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
203213
public Builder(@NonNull android.app.Fragment fragment, @NonNull String rationale) {
204214
mActivityOrFragment = fragment;
205215
mContext = fragment.getActivity();
206216
mRationale = rationale;
207217
}
208218

219+
/**
220+
* Create a new Builder for an {@link AppSettingsDialog}.
221+
*
222+
* @param activity the {@link Activity} in which to display the dialog.
223+
*/
224+
public Builder(@NonNull Activity activity) {
225+
mActivityOrFragment = activity;
226+
mContext = activity;
227+
}
228+
229+
/**
230+
* Create a new Builder for an {@link AppSettingsDialog}.
231+
*
232+
* @param fragment the {@link Fragment} in which to display the dialog.
233+
*/
234+
public Builder(@NonNull Fragment fragment) {
235+
mActivityOrFragment = fragment;
236+
mContext = fragment.getContext();
237+
}
238+
239+
/**
240+
* Create a new Builder for an {@link AppSettingsDialog}.
241+
*
242+
* @param fragment the {@link android.app.Fragment} in which to display the dialog.
243+
*/
244+
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
245+
public Builder(@NonNull android.app.Fragment fragment) {
246+
mActivityOrFragment = fragment;
247+
mContext = fragment.getActivity();
248+
}
249+
209250

210251
/**
211-
* Set the title dialog. Default is no title.
252+
* Set the title dialog. Default is "Permissions Required".
212253
*/
213254
public Builder setTitle(String title) {
214255
mTitle = title;
215256
return this;
216257
}
217258

259+
/**
260+
* Set the title dialog. Default is "Permissions Required".
261+
*/
262+
public Builder setTitle(@StringRes int title) {
263+
mTitle = mContext.getString(title);
264+
return this;
265+
}
266+
267+
/**
268+
* Set the rationale dialog. Default is
269+
* "This app may not work correctly without the requested permissions.
270+
* Open the app settings screen to modify app permissions."
271+
*/
272+
public Builder setRationale(String rationale) {
273+
mRationale = rationale;
274+
return this;
275+
}
276+
277+
/**
278+
* Set the rationale dialog. Default is
279+
* "This app may not work correctly without the requested permissions.
280+
* Open the app settings screen to modify app permissions."
281+
*/
282+
public Builder setRationale(@StringRes int rationale) {
283+
mRationale = mContext.getString(rationale);
284+
return this;
285+
}
286+
218287
/**
219288
* Set the positive button text, default is {@link android.R.string#ok}.
220289
*/
@@ -223,6 +292,14 @@ public Builder setPositiveButton(String positiveButton) {
223292
return this;
224293
}
225294

295+
/**
296+
* Set the positive button text, default is {@link android.R.string#ok}.
297+
*/
298+
public Builder setPositiveButton(@StringRes int positiveButton) {
299+
mPositiveButton = mContext.getString(positiveButton);
300+
return this;
301+
}
302+
226303
/**
227304
* Set the negative button text and click listener, default text is
228305
* {@link android.R.string#cancel}.
@@ -250,6 +327,14 @@ public Builder setNegativeButton(String negativeButton) {
250327
return this;
251328
}
252329

330+
/**
331+
* Set the negative button text, default is {@link android.R.string#cancel}.
332+
*/
333+
public Builder setNegativeButton(@StringRes int negativeButton) {
334+
mNegativeButton = mContext.getString(negativeButton);
335+
return this;
336+
}
337+
253338
/**
254339
* Set the request code use when launching the Settings screen for result, can be retrieved
255340
* in the calling Activity's {@link Activity#onActivityResult(int, int, Intent)} method.
@@ -265,6 +350,10 @@ public Builder setRequestCode(int requestCode) {
265350
* call to {@link AppSettingsDialog#show()}.
266351
*/
267352
public AppSettingsDialog build() {
353+
mRationale = TextUtils.isEmpty(mRationale) ?
354+
mContext.getString(R.string.rationale_ask_again) : mRationale;
355+
mTitle = TextUtils.isEmpty(mTitle) ?
356+
mContext.getString(R.string.title_settings_dialog) : mTitle;
268357
mPositiveButton = TextUtils.isEmpty(mPositiveButton) ?
269358
mContext.getString(android.R.string.ok) : mPositiveButton;
270359
mNegativeButton = TextUtils.isEmpty(mNegativeButton) ?

easypermissions/src/main/java/pub/devrel/easypermissions/EasyPermissions.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package pub.devrel.easypermissions;
1717

1818
import android.Manifest;
19+
import android.annotation.SuppressLint;
1920
import android.app.Activity;
2021
import android.content.Context;
2122
import android.content.pm.PackageManager;
@@ -112,7 +113,7 @@ public static void requestPermissions(@NonNull Activity activity,
112113
* @param perms a set of permissions to be requested.
113114
* @see Manifest.permission
114115
*/
115-
@SuppressWarnings("NewApi")
116+
@SuppressLint("NewApi")
116117
public static void requestPermissions(@NonNull Activity activity,
117118
@NonNull String rationale,
118119
@StringRes int positiveButton,
@@ -162,7 +163,7 @@ public static void requestPermissions(@NonNull Fragment fragment,
162163
* Fragment#onRequestPermissionsResult(int, String[], int[])}.
163164
* @see #requestPermissions(Activity, String, int, int, int, String...)
164165
*/
165-
@SuppressWarnings("NewApi")
166+
@SuppressLint("NewApi")
166167
public static void requestPermissions(@NonNull Fragment fragment,
167168
@NonNull String rationale,
168169
@StringRes int positiveButton,
@@ -209,7 +210,7 @@ public static void requestPermissions(@NonNull android.app.Fragment fragment,
209210
* android.app.Fragment#onRequestPermissionsResult(int, String[], int[])}.
210211
* @see #requestPermissions(Activity, String, int, int, int, String...)
211212
*/
212-
@SuppressWarnings("NewApi")
213+
@SuppressLint("NewApi")
213214
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
214215
public static void requestPermissions(@NonNull android.app.Fragment fragment,
215216
@NonNull String rationale,
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<resources>
2+
<string name="rationale_ask_again">This app may not work correctly without the requested permissions. Open the app settings screen to modify app permissions.</string>
3+
<string name="title_settings_dialog">Permissions Required</string>
4+
</resources>

0 commit comments

Comments
 (0)