diff --git a/CHANGELOG.md b/CHANGELOG.md index 585ee1a69..0c2f3c7e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Wikimedia Commons for Android +##v1.21 +- Fixed Google Photos multiple share crash + ##v1.20 - Hotfix for data=null crash diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9fe916c5b..9240c241c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="39" + android:versionName="1.21" > @@ -44,9 +44,7 @@ > - - @@ -58,9 +56,7 @@ > - - diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index af69c14e9..df2257896 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -98,7 +98,7 @@ public class ContributionsListFragment extends Fragment { Uri imageData = data.getData(); controller.handleImagePicked(requestCode, imageData); } else { - Log.d("Contributions", "OnActivityResult() parameters: Result code: " + resultCode + " Data: null"); + Log.e("Contributions", "OnActivityResult() parameters: Result code: " + resultCode + " Data: null"); } } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java b/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java index 0aa135428..5fa881a60 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java @@ -2,13 +2,18 @@ package fr.free.nrw.commons.upload; import java.util.*; +import android.Manifest; import android.app.*; import android.content.*; +import android.content.pm.PackageManager; import android.database.DataSetObserver; import android.net.*; import android.os.*; +import android.support.v4.app.ActivityCompat; import android.support.v4.app.FragmentManager; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; +import android.util.Log; import android.view.*; import android.view.inputmethod.InputMethodManager; import android.widget.*; @@ -77,6 +82,32 @@ public class MultipleShareActivity } public void OnMultipleUploadInitiated() { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + //Check for Storage permission that is required for upload. Do not allow user to proceed without permission, otherwise will crash + if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); + } else { + multipleUploadBegins(); + } + } else { + multipleUploadBegins(); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + if (requestCode == 1) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + multipleUploadBegins(); + } + } + } + + private void multipleUploadBegins() { + + Log.d("MultipleShareActivity", "Multiple upload begins"); + final ProgressDialog dialog = new ProgressDialog(MultipleShareActivity.this); dialog.setIndeterminate(false); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); @@ -114,7 +145,8 @@ public class MultipleShareActivity } getSupportFragmentManager().beginTransaction() .add(R.id.uploadsFragmentContainer, categorizationFragment, "categorization") - .commit(); + .commitAllowingStateLoss(); + //See http://stackoverflow.com/questions/7469082/getting-exception-illegalstateexception-can-not-perform-this-action-after-onsa } public void onCategoriesSave(ArrayList categories) {