From 809a0fd9b565cedddd5b1fbf8a0011189cd348bd Mon Sep 17 00:00:00 2001 From: PhotonQyv Date: Tue, 22 Aug 2017 19:03:29 +0100 Subject: [PATCH 1/4] Removed the comment & TODO. --- .../mastodon/activities/TootActivity.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java index a6bd3dac1..6a81aeb7d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java @@ -521,27 +521,9 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc } // Handles uploading shared images - // TODO: Get it working for ACTION_SEND_MULTIPLE public void uploadSharedImage(ArrayList uri) { if (!uri.isEmpty()) { - - /* - This was so I could test get info about first Uri for both ACTION_SEND & - ACTION_SEND_MULTIPLE. - - The ACTION_SEND works fine, ACTION_SEND_MULTIPLE doesn't. - - Turns out the Uris are different if single image is shared, versus multiple images. - - SINGLE Uri: content://external/images/media/some_number - MULTIPLE Uri: file:///sdcard/Pictures/Shader/Images/some_jpg - - NB. Both Uris are for the same file. - - The first loads, the second (SEND_MULTIPLE) fails. - - */ for(Uri fileUri: uri) { if (fileUri != null) { picture_scrollview.setVisibility(View.VISIBLE); From 49dfacf331e359fce10b472532ffbbfdab155ef5 Mon Sep 17 00:00:00 2001 From: PhotonQyv Date: Tue, 22 Aug 2017 19:38:25 +0100 Subject: [PATCH 2/4] Working on Permissions. --- .../mastodon/activities/MainActivity.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java index 490f2381e..554dbba86 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java @@ -14,18 +14,22 @@ * see . */ package fr.gouv.etalab.mastodon.activities; +import android.Manifest; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.graphics.PorterDuff; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TabLayout; +import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.content.ContextCompat; @@ -114,6 +118,8 @@ public class MainActivity extends AppCompatActivity private RelativeLayout main_app_container; private Stack stackBack = new Stack<>(); + private final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 0; + public MainActivity() { } @@ -437,8 +443,43 @@ public class MainActivity extends AppCompatActivity }).show(); } Helper.switchLayout(MainActivity.this); + + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + + if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != + PackageManager.PERMISSION_GRANTED) { + // Should we show an explanation? + if (ActivityCompat.shouldShowRequestPermissionRationale(this, + Manifest.permission.READ_CONTACTS)) { + + Toast.makeText(getApplicationContext(), "To display a rationale", Toast.LENGTH_LONG).show(); + + } else { + ActivityCompat.requestPermissions(this, + new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, + MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); + } + } + } } + @Override + public void onRequestPermissionsResult(int requestCode, + String permissions[], int[] grantResults) { + switch (requestCode) { + case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: { + // If request is cancelled, the result arrays are empty. + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + } else { + Toast.makeText(getApplicationContext(), "Denied", Toast.LENGTH_SHORT).show(); + } + break; + } + } + } + + @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); From b9a84d603dbf8f89504879acc9ce0da1f77e34c7 Mon Sep 17 00:00:00 2001 From: PhotonQyv Date: Tue, 22 Aug 2017 20:54:28 +0100 Subject: [PATCH 3/4] Updated to add a few comments and remove the Toasts. --- .../java/fr/gouv/etalab/mastodon/activities/MainActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java index 554dbba86..8a0edeea6 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java @@ -452,7 +452,7 @@ public class MainActivity extends AppCompatActivity if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) { - Toast.makeText(getApplicationContext(), "To display a rationale", Toast.LENGTH_LONG).show(); + // If we want to explain the reason for the permission it needs to be added here. } else { ActivityCompat.requestPermissions(this, @@ -471,8 +471,8 @@ public class MainActivity extends AppCompatActivity // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + // We have the permission. } else { - Toast.makeText(getApplicationContext(), "Denied", Toast.LENGTH_SHORT).show(); } break; } From 43759cab288cb3db22c49ed24819384c855e4b8a Mon Sep 17 00:00:00 2001 From: PhotonQyv Date: Tue, 22 Aug 2017 21:02:35 +0100 Subject: [PATCH 4/4] I was using the wrong permission in the shouldShowRequestPermissionRationale() method call. --- .../java/fr/gouv/etalab/mastodon/activities/MainActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java index 8a0edeea6..42584a335 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java @@ -450,7 +450,7 @@ public class MainActivity extends AppCompatActivity PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(this, - Manifest.permission.READ_CONTACTS)) { + Manifest.permission.READ_EXTERNAL_STORAGE)) { // If we want to explain the reason for the permission it needs to be added here.