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

Commit 21a412c9 authored by Owen Lin's avatar Owen Lin
Browse files

Fix NPE in Gallery.

This happens if user set type in an intent. But we get a different type from
content resolver.

Change-Id: Iabafce7f7aaff23a7a9ee09e1d38ab50049abc88
fix: 6358473
parent 714fe205
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -887,13 +887,9 @@ public class CropImage extends AbstractGalleryActivity {
    private MediaItem getMediaItemFromIntentData() {
        Uri uri = getIntent().getData();
        DataManager manager = getDataManager();
        if (uri == null) {
            Log.w(TAG, "no data given");
            return null;
        }
        Path path = manager.findPathByUri(uri);
        Path path = manager.findPathByUri(uri, getIntent().getType());
        if (path == null) {
            Log.w(TAG, "cannot get path for: " + uri);
            Log.w(TAG, "cannot get path for: " + uri + ", or no data given");
            return null;
        }
        return (MediaItem) manager.getMediaObject(path);
+3 −4
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.Toast;

@@ -137,7 +136,7 @@ public final class Gallery extends AbstractGalleryActivity implements OnCancelLi
        if (slideshow) {
            getActionBar().hide();
            DataManager manager = getDataManager();
            Path path = manager.findPathByUri(intent.getData());
            Path path = manager.findPathByUri(intent.getData(), intent.getType());
            if (path == null || manager.getMediaObject(path)
                    instanceof MediaItem) {
                path = Path.fromString(
@@ -173,7 +172,7 @@ public final class Gallery extends AbstractGalleryActivity implements OnCancelLi
                            KEY_MEDIA_TYPES, String.valueOf(mediaType))
                            .build();
                }
                Path setPath = dm.findPathByUri(uri);
                Path setPath = dm.findPathByUri(uri, null);
                MediaSet mediaSet = null;
                if (setPath != null) {
                    mediaSet = (MediaSet) dm.getMediaObject(setPath);
@@ -192,7 +191,7 @@ public final class Gallery extends AbstractGalleryActivity implements OnCancelLi
                    startDefaultPage();
                }
            } else {
                Path itemPath = dm.findPathByUri(uri);
                Path itemPath = dm.findPathByUri(uri, intent.getType());
                Path albumPath = dm.getDefaultSetOf(itemPath);
                // TODO: Make this parameter public so other activities can reference it.
                boolean singleItemOnly = intent.getBooleanExtra("SingleItemOnly", false);
+3 −8
Original line number Diff line number Diff line
@@ -19,13 +19,10 @@ package com.android.gallery3d.app;
import android.app.ActionBar.OnMenuVisibilityListener;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.net.Uri;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Handler;
@@ -34,8 +31,6 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ShareActionProvider;
import android.widget.Toast;
@@ -57,9 +52,9 @@ import com.android.gallery3d.ui.GLCanvas;
import com.android.gallery3d.ui.GLView;
import com.android.gallery3d.ui.ImportCompleteListener;
import com.android.gallery3d.ui.MenuExecutor;
import com.android.gallery3d.ui.PhotoView;
import com.android.gallery3d.ui.ScreenNail;
import com.android.gallery3d.ui.ScreenNailHolder;
import com.android.gallery3d.ui.PhotoView;
import com.android.gallery3d.ui.SelectionManager;
import com.android.gallery3d.ui.SynchronizedHandler;
import com.android.gallery3d.ui.UserInteractionListener;
@@ -578,8 +573,8 @@ public class PhotoPage extends ActivityState
            case REQUEST_CROP:
                if (resultCode == Activity.RESULT_OK) {
                    if (data == null) break;
                    Path path = mApplication
                            .getDataManager().findPathByUri(data.getData());
                    Path path = mApplication.getDataManager()
                            .findPathByUri(data.getData(), data.getType());
                    if (path != null) {
                        mModel.setCurrentPhoto(path, mCurrentIndex);
                    }
+2 −2
Original line number Diff line number Diff line
@@ -242,10 +242,10 @@ public class DataManager {
        return getMediaObject(path).getMediaType();
    }

    public Path findPathByUri(Uri uri) {
    public Path findPathByUri(Uri uri, String type) {
        if (uri == null) return null;
        for (MediaSource source : mSourceMap.values()) {
            Path path = source.findPathByUri(uri);
            Path path = source.findPathByUri(uri, type);
            if (path != null) return path;
        }
        return null;
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ class LocalSource extends MediaSource {
    }

    @Override
    public Path findPathByUri(Uri uri) {
    public Path findPathByUri(Uri uri, String type) {
        try {
            switch (mUriMatcher.match(uri)) {
                case LOCAL_IMAGE_ITEM: {
Loading