Merged in PhotonQyv/mastodon_etalab/ImageIntentPermission (pull request #73)

ImageIntentPermission (Corrected version)
This commit is contained in:
PhotonQyv 2017-08-23 05:55:17 +00:00 committed by tom79
commit 3b9a63c6af
2 changed files with 41 additions and 18 deletions

View File

@ -14,18 +14,22 @@
* see <http://www.gnu.org/licenses>. */
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<Integer> 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_EXTERNAL_STORAGE)) {
// If we want to explain the reason for the permission it needs to be added here.
} 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) {
// We have the permission.
} else {
}
break;
}
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);

View File

@ -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> 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);