Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit b633abd9 authored by gokul swaminathan's avatar gokul swaminathan Committed by GitHub
Browse files

Merge pull request #111 from Fs00/no-uri-perm-check

Simplify logic for reading intent URI
parents 9e8e5315 4d74b07c
Loading
Loading
Loading
Loading
+13 −31
Original line number Diff line number Diff line
@@ -74,11 +74,9 @@ import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;

import static android.content.pm.PackageManager.PERMISSION_DENIED;

public class MainActivity extends CyaneaAppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();
    private static final String TAG = "MainActivity";

    private PrintManager mgr;
    private SharedPreferences prefManager;
@@ -106,10 +104,7 @@ public class MainActivity extends CyaneaAppCompatActivity {

    private final ActivityResultLauncher<Intent> settingsLauncher = registerForActivityResult(
        new StartActivityForResult(),
        result -> {
            if (uri != null)
                displayFromUri(uri);
        }
        result -> displayFromUri(uri)
    );

    @Override
@@ -134,14 +129,11 @@ public class MainActivity extends CyaneaAppCompatActivity {
        if (savedInstanceState != null) {
            restoreInstanceState(savedInstanceState);
        } else {
            readUriFromIntent(getIntent());
        }
        if (uri == null) {
            uri = getIntent().getData();
            if (uri == null)
                pickFile();
            setTitle("");
        } else {
            displayFromUri(uri);
        }
        displayFromUri(uri);
    }

    @Override
@@ -185,23 +177,6 @@ public class MainActivity extends CyaneaAppCompatActivity {
        pdfPassword = savedState.getString("pdfPassword");
    }

    private void readUriFromIntent(Intent intent) {
        Uri intentUri = intent.getData();
        if (intentUri == null) {
            return;
        }

        // Happens when the content provider URI used to open the document expires
        if ("content".equals(intentUri.getScheme()) &&
            checkCallingOrSelfUriPermission(intentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION) == PERMISSION_DENIED) {
            Log.w(TAG, "No read permission for URI " + intentUri);
            uri = null;
            return;
        }

        uri = intentUri;
    }

    void shareFile() {
        startActivity(Utils.emailIntent(pdfFileName, "", getResources().getString(R.string.share), uri));
    }
@@ -331,6 +306,11 @@ public class MainActivity extends CyaneaAppCompatActivity {
    }

    void displayFromUri(Uri uri) {
        if (uri == null) {
            setTitle("");
            return;
        }

        pdfFileName = getFileName(uri);
        setTitle(pdfFileName);
        setTaskDescription(new ActivityManager.TaskDescription(pdfFileName));
@@ -420,6 +400,8 @@ public class MainActivity extends CyaneaAppCompatActivity {
                        result = cursor.getString(indexDisplayName);
                    }
                }
            } catch (Exception e) {
                Log.w(TAG, "Couldn't retrieve file name", e);
            }
        }
        if (result == null) {