Skip to content

Commit c8b6b22

Browse files
poretskybear101
authored andcommitted
Android client: special case for new media access permissions
When media files (images, video and audio) access is not granted, other files (text or pdf documents for instance) still can be read. Thus, upload facility should be available. And it is somewhat normal case, so no need to bother user by constant warnings.
1 parent a982b66 commit c8b6b22

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

Client/TeamTalkAndroid/src/main/java/dk/bearware/data/Permissions.java

+13-4
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,13 @@ public boolean isPending() {
8080
}
8181

8282
public boolean request(@NonNull Activity activity) {
83+
return request(activity, false);
84+
}
85+
86+
public boolean request(@NonNull Activity activity, boolean noWarn) {
8387
boolean state = isGranted(activity.getBaseContext());
8488
if (!state) {
85-
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, id)) {
86-
Toast.makeText(activity.getBaseContext(), msgResId, Toast.LENGTH_LONG).show();
87-
} else {
89+
if (!ActivityCompat.shouldShowRequestPermissionRationale(activity, id)) {
8890
boolean busy = false;
8991
for (Permissions p : values())
9092
if (p.pending) {
@@ -96,6 +98,8 @@ public boolean request(@NonNull Activity activity) {
9698
} else {
9799
emitRequest(activity);
98100
}
101+
} else if (!noWarn) {
102+
Toast.makeText(activity.getBaseContext(), msgResId, Toast.LENGTH_LONG).show();
99103
}
100104
}
101105
return state;
@@ -108,7 +112,7 @@ private void emitRequest(@NonNull Activity activity) {
108112

109113
@Nullable
110114
public static Permissions onRequestResult(@NonNull Activity activity, int requestCode, @NonNull int[] grantResults) {
111-
Permissions permission = ((requestCode > 0) && (requestCode <= values().length)) ? values()[requestCode - 1] : null;
115+
Permissions permission = fromRequestCode(requestCode);
112116
boolean granted = (grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED);
113117
if (permission != null) {
114118
permission.pending = false;
@@ -126,4 +130,9 @@ public static Permissions onRequestResult(@NonNull Activity activity, int reques
126130
return permission;
127131
}
128132

133+
@Nullable
134+
public static Permissions fromRequestCode(int requestCode) {
135+
return ((requestCode > 0) && (requestCode <= values().length)) ? values()[requestCode - 1] : null;
136+
}
137+
129138
}

Client/TeamTalkAndroid/src/main/java/dk/bearware/gui/MainActivity.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -763,12 +763,10 @@ private void fileSelectionStart() {
763763
}
764764

765765
private boolean requestMediaPermissions() {
766-
boolean images = Permissions.READ_MEDIA_IMAGES.request(this);
767-
boolean video = Permissions.READ_MEDIA_VIDEO.request(this);
768-
boolean audio = Permissions.READ_MEDIA_AUDIO.request(this);
769-
return areMediaPermissionsComplete() ?
770-
(images || video || audio) :
771-
false;
766+
Permissions.READ_MEDIA_IMAGES.request(this, true);
767+
Permissions.READ_MEDIA_VIDEO.request(this, true);
768+
Permissions.READ_MEDIA_AUDIO.request(this, true);
769+
return areMediaPermissionsComplete();
772770
}
773771

774772
private boolean areMediaPermissionsComplete() {
@@ -1929,8 +1927,13 @@ public void onRequestPermissionsResult(int requestCode,
19291927
@NonNull String[] permissions, @NonNull int[] grantResults) {
19301928
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
19311929
Permissions granted = Permissions.onRequestResult(this, requestCode, grantResults);
1932-
if (granted == null)
1933-
return;
1930+
if (granted == null) {
1931+
granted = Permissions.fromRequestCode(requestCode);
1932+
if ((granted != Permissions.READ_MEDIA_IMAGES) &&
1933+
(granted != Permissions.READ_MEDIA_VIDEO) &&
1934+
(granted != Permissions.READ_MEDIA_AUDIO))
1935+
return;
1936+
}
19341937
switch (granted) {
19351938
case READ_EXTERNAL_STORAGE:
19361939
case READ_MEDIA_IMAGES:

0 commit comments

Comments
 (0)