Skip to content

Commit 64652b9

Browse files
authored
fixes blank screen decrepancy when sharing items from external apps (#5345)
* fixes blank screen decrepancy when sharing items from external apps * reverts comment removal
1 parent f130851 commit 64652b9

File tree

3 files changed

+50
-15
lines changed

3 files changed

+50
-15
lines changed

app/src/main/java/fr/free/nrw/commons/filepicker/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public interface Constants {
88
*/
99
interface RequestCodes {
1010
int LOCATION = 1;
11+
int STORAGE = 2;
1112
int FILE_PICKER_IMAGE_IDENTIFICATOR = 0b1101101100; //876
1213
int SOURCE_CHOOSER = 1 << 15;
1314

app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@
1010
import android.annotation.SuppressLint;
1111
import android.app.ProgressDialog;
1212
import android.content.Intent;
13+
import android.content.pm.PackageManager;
1314
import android.location.Location;
1415
import android.location.LocationManager;
1516
import android.os.Build;
17+
import android.os.Build.VERSION;
18+
import android.os.Build.VERSION_CODES;
1619
import android.os.Bundle;
1720
import android.provider.Settings;
1821
import android.util.DisplayMetrics;
@@ -21,6 +24,7 @@
2124
import android.widget.LinearLayout;
2225
import android.widget.RelativeLayout;
2326
import android.widget.TextView;
27+
import androidx.annotation.NonNull;
2428
import androidx.cardview.widget.CardView;
2529
import androidx.fragment.app.Fragment;
2630
import androidx.fragment.app.FragmentManager;
@@ -38,6 +42,7 @@
3842
import fr.free.nrw.commons.auth.LoginActivity;
3943
import fr.free.nrw.commons.auth.SessionManager;
4044
import fr.free.nrw.commons.contributions.ContributionController;
45+
import fr.free.nrw.commons.filepicker.Constants.RequestCodes;
4146
import fr.free.nrw.commons.filepicker.UploadableFile;
4247
import fr.free.nrw.commons.kvstore.JsonKvStore;
4348
import fr.free.nrw.commons.location.LatLng;
@@ -59,7 +64,6 @@
5964
import io.reactivex.android.schedulers.AndroidSchedulers;
6065
import io.reactivex.disposables.CompositeDisposable;
6166
import io.reactivex.schedulers.Schedulers;
62-
import java.security.Permission;
6367
import java.util.ArrayList;
6468
import java.util.Collections;
6569
import java.util.HashMap;
@@ -150,11 +154,6 @@ protected void onCreate(Bundle savedInstanceState) {
150154
compositeDisposable = new CompositeDisposable();
151155
init();
152156
nearbyPopupAnswers = new HashMap<>();
153-
PermissionUtils.checkPermissionsAndPerformAction(this,
154-
this::receiveSharedItems,
155-
R.string.storage_permission_title,
156-
R.string.write_storage_permission_rationale_for_image_share,
157-
PERMISSIONS_STORAGE);
158157
//getting the current dpi of the device and if it is less than 320dp i.e. overlapping
159158
//threshold, thumbnails automatically minimizes
160159
DisplayMetrics metrics = getResources().getDisplayMetrics();
@@ -167,6 +166,7 @@ protected void onCreate(Bundle savedInstanceState) {
167166
}
168167
locationManager.requestLocationUpdatesFromProvider(LocationManager.GPS_PROVIDER);
169168
locationManager.requestLocationUpdatesFromProvider(LocationManager.NETWORK_PROVIDER);
169+
checkStoragePermissions();
170170
}
171171

172172
private void init() {
@@ -232,7 +232,6 @@ protected void onResume() {
232232
askUserToLogIn();
233233
}
234234
checkBlockStatus();
235-
checkStoragePermissions();
236235
}
237236

238237
/**
@@ -255,14 +254,10 @@ protected void checkBlockStatus() {
255254

256255
private void checkStoragePermissions() {
257256
final boolean hasAllPermissions = PermissionUtils.hasPermission(this, PERMISSIONS_STORAGE);
258-
if (!hasAllPermissions) {
259-
PermissionUtils.checkPermissionsAndPerformAction(this,
260-
() -> {
261-
//TODO handle this
262-
},
263-
R.string.storage_permission_title,
264-
R.string.write_storage_permission_rationale_for_image_share,
265-
PERMISSIONS_STORAGE);
257+
if (hasAllPermissions) {
258+
receiveSharedItems();
259+
} else if (VERSION.SDK_INT >= VERSION_CODES.M) {
260+
requestPermissions(PERMISSIONS_STORAGE, RequestCodes.STORAGE);
266261
}
267262
}
268263

@@ -350,7 +345,44 @@ public void askUserToLogIn() {
350345
startActivity(loginIntent);
351346
}
352347

348+
@Override
349+
public void onRequestPermissionsResult(final int requestCode,
350+
@NonNull final String[] permissions,
351+
@NonNull final int[] grantResults) {
352+
boolean areAllGranted = false;
353+
if (requestCode == RequestCodes.STORAGE) {
354+
if (VERSION.SDK_INT >= VERSION_CODES.M) {
355+
for (int i = 0; i < grantResults.length; i++) {
356+
String permission = permissions[i];
357+
areAllGranted = grantResults[i] == PackageManager.PERMISSION_GRANTED;
358+
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
359+
boolean showRationale = shouldShowRequestPermissionRationale(permission);
360+
if (!showRationale) {
361+
DialogUtil.showAlertDialog(this,
362+
getString(R.string.storage_permissions_denied),
363+
getString(R.string.unable_to_share_upload_item),
364+
getString(android.R.string.ok),
365+
this::finish,
366+
false);
367+
} else {
368+
DialogUtil.showAlertDialog(this,
369+
getString(R.string.storage_permission_title),
370+
getString(
371+
R.string.write_storage_permission_rationale_for_image_share),
372+
getString(android.R.string.ok),
373+
this::checkStoragePermissions,
374+
false);
375+
}
376+
}
377+
}
353378

379+
if (areAllGranted) {
380+
receiveSharedItems();
381+
}
382+
}
383+
}
384+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
385+
}
354386

355387
@Override
356388
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,8 @@ Upload your first media by tapping on the add button.</string>
775775
<string name="full_screen_mode_features_info">Swipe fast and long to perform these actions: \n- Left/Right: Go to previous/next \n- Up: Select\n- Down: Mark as not for upload.</string>
776776
<string name="set_up_avatar_toast_string">To set up your leaderboard avatar, tap \"Set as avatar\" in the three-dots menu of any image.</string>
777777
<string name="similar_coordinate_description_auto_set">The coordinates are not the exact coordinates, but the person who uploaded this picture thinks they are close enough.</string>
778+
<string name="storage_permissions_denied">Storage Permissions Denied</string>
779+
<string name="unable_to_share_upload_item">Unable to share this item</string>
778780
<plurals name="custom_picker_images_selected_title_appendix">
779781
<item quantity="one">%d image selected</item>
780782
<item quantity="other">%d images selected</item>

0 commit comments

Comments
 (0)