Procházet zdrojové kódy

[이벤트][New] 파일 경로를 가져오지 못하는 경우 예외 처리

hyodong.min před 6 roky
rodič
revize
73f4304ade

+ 22 - 16
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/entry/EventQuestionFragment.java

@@ -355,24 +355,30 @@ public class EventQuestionFragment extends FragmentBase<EventQuestionPresenter>
     }
 
     Uri uri = data.getData();
-    if (requestCode == GALLERY_INTENT_CALLED) {
-      {} // nothing
-    }
-    else if (requestCode == GALLERY_KITKAT_INTENT_CALLED) {
-      final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
-      // Check for the freshest data.
-      getContext().getContentResolver().takePersistableUriPermission(uri, takeFlags);
-    }
+    if (null != uri) {
+//      if (requestCode == GALLERY_INTENT_CALLED) {
+//        {} // nothing
+//      }
+//      else
+      if (requestCode == GALLERY_KITKAT_INTENT_CALLED) {
+        final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        // Check for the freshest data.
+        getContext().getContentResolver().takePersistableUriPermission(uri, takeFlags);
+      }
 
-    try {
-      InputStream inputStream = getContext().getContentResolver().openInputStream(uri);
-      Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
-      inputStream.close();
+      try {
+        InputStream inputStream = getContext().getContentResolver().openInputStream(uri);
+        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
+        inputStream.close();
 
-      presenter.onImageReceived(uri, bitmap);
-    } catch (Exception e) {
-      //e.printStackTrace();
-      Log.e("APP#  EventQuestionFragment | onActivityResult", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
+        presenter.onImageReceived(uri, bitmap);
+      } catch (Exception e) {
+        //e.printStackTrace();
+        Log.e("APP#  EventQuestionFragment | onActivityResult", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
+      }
+    }
+    else {
+      Log.e("APP#  EventQuestionFragment | onActivityResult", " uri == null");
     }
   }
 

+ 21 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/entry/EventQuestionModel.java

@@ -2,6 +2,7 @@ package kr.co.zumo.app.lifeplus.view.screen.event.entry;
 
 import android.content.Context;
 import android.net.Uri;
+import android.support.annotation.Nullable;
 import android.util.Log;
 import android.util.SparseArray;
 
@@ -302,6 +303,7 @@ public class EventQuestionModel extends Model implements IUriListProvider {
       );
   }
 
+  @Nullable
   private File getFile(Uri fileUri) {
     String path = null;
     Log.d("APP# EventQuestionModel | getFile", "|" + " fileUri: " + fileUri);
@@ -312,6 +314,10 @@ public class EventQuestionModel extends Model implements IUriListProvider {
       Log.e("APP#  EventQuestionModel | getFile", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
     }
     Log.d("APP# EventQuestionModel | getFile", "|" + "path ===> " + path);
+    if(null == path) {
+      return null;
+    }
+
     return new File(path);
   }
 
@@ -362,7 +368,19 @@ public class EventQuestionModel extends Model implements IUriListProvider {
    * @param key   데이터 key
    * @param uri   Uri
    */
-  public void addUri(int index, int key, Uri uri) {
+  public boolean addUri(int index, int key, Uri uri) {
+    String path = null;
+    try {
+      path = FileUtil.getFilePath(context, uri);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    // uri 에서 파일을 가져올 수 없을 경우
+    if(null == path) {
+      return false;
+    }
+
     SparseArray<Uri> list = uriArray.get(index);
     if (null == list) {
       list = new SparseArray<>();
@@ -371,6 +389,8 @@ public class EventQuestionModel extends Model implements IUriListProvider {
     Log.d("APP# EventQuestionModel | addUri", "|" + " index: " + index + " key: " + key + ", add: " + uri.getPath());
     list.put(key, uri);
     Log.d("APP# EventQuestionModel | addUri", "|" + list.size());
+
+    return true;
   }
 
   /**

+ 9 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/entry/EventQuestionPresenter.java

@@ -268,12 +268,16 @@ public class EventQuestionPresenter extends Presenter<EventQuestionModel, IEvent
     Log.d("APP# EventQuestionPresenter | onImageReceived", "| file path: " + uri.getPath());
     int index = model.getRequestIndex();
     int key = uri.hashCode();
-    view.putAlbumImage(index, key, image);
 
-    model.addUri(index, key, uri);
-    model.verify(index);
-    setSubmitButton();
+    if (model.addUri(index, key, uri)) {
+      model.verify(index);
 
-    view.validate(index, model.isValidate(index));
+      view.putAlbumImage(index, key, image);
+      setSubmitButton();
+      view.validate(index, model.isValidate(index));
+    }
+    else {
+      showErrorDialog("Unsupported File");
+    }
   }
 }